Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

ERROR en Integridad referencial SET NULL

Estas en el tema de ERROR en Integridad referencial SET NULL en el foro de Mysql en Foros del Web. Hola. ¿Alguien entendido tendría a bien decirme porqué me dá el error ERROR 1215 (HY000): Cannot add foreign key constraint en las últimas constraints? Si ...
  #1 (permalink)  
Antiguo 17/04/2013, 08:49
 
Fecha de Ingreso: marzo-2012
Mensajes: 45
Antigüedad: 10 años, 8 meses
Puntos: 0
ERROR en Integridad referencial SET NULL

Hola.

¿Alguien entendido tendría a bien decirme porqué me dá el error
ERROR 1215 (HY000): Cannot add foreign key constraint

en las últimas constraints?

Si omito "on delete set null" si que funciona

Muchas gracias
Código MySQL:
Ver original
  1. CREATE TABLE PERSONA (
  2.     nif     varchar(10),
  3.     nombre  varchar(25),
  4.     constraint  PK_PERSONA primary key (nif));
  5.  
  6. CREATE TABLE  IMPUESTO (
  7.     cod     int(4),
  8.     nombre  varchar(20),
  9.     constraint  PK_IMPUESTO primary key (cod));
  10.  
  11. CREATE TABLE  PAGA (
  12.     nif     varchar(10),
  13.     cod     int(4),
  14.     constraint  PK_PAGA primary key (nif,cod),
  15.     constraint FK_TO_PERSONA  foreign key (nif)  references PERSONA (nif) on delete set null,
  16.     constraint FK_TO_IMPUESTO  foreign key (cod)  references IMPUESTO (cod) on delete set null);

Última edición por gnzsoloyo; 17/04/2013 a las 09:00 Razón: SQL Mal etiquetado
  #2 (permalink)  
Antiguo 17/04/2013, 09:03
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 15 años
Puntos: 2658
Respuesta: ERROS en Integridad referencial SET NULL

Una FK apuntando a una PK no puede ser NULL, por la simple razón de que una PK jamás puede ser NULL.
Por lo demás, creo que la tabla "PAGA" está mal definida, porque en ese esquema sólo podrás ingresar una única paga por cada par (cod, nif)... O sea que sólo se podrá pagar el concepto una sola vez a cada persona.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 17/04/2013, 09:07
 
Fecha de Ingreso: marzo-2012
Mensajes: 45
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: ERROS en Integridad referencial SET NULL

Me respondo a mi mismo.
Creo que ya sé por deonde va.

La tabla PAGA viene de una relación de muchos a muchos
  #4 (permalink)  
Antiguo 17/04/2013, 09:13
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 15 años
Puntos: 2658
Respuesta: ERROS en Integridad referencial SET NULL

Cita:
La tabla PAGA viene de una relación de muchos a muchos
Eso es obvio

Me refiero a que "paga" habitualmente es como se denomina la tabla de liquidación sueldos y jornales, y no la de conceptos aplicables al mimo tema. En el caso de ser de sueldos y jornales, requeriría fecha. Si fuera conceptos a aplicar al pago vinculados a una persona, te recomiendo usar nombres claramente descriptivos de la entidad representada, porque de lo contrario luego se prestarán a confusión.
En un tema de buenas prácticas de diseño.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: integridad, null, referencial, set
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:51.