PostgreSQL - Problema doble FOREIGN KEY

 
Vista:

Problema doble FOREIGN KEY

Publicado por Arturo Estudiante (1 intervención) el 23/05/2007 22:17:17
Mi caso es que tengo dos de las tablas referenciadas mutuamente con foreign keys, de forma que no sé como introducir las restricciones y/o los datos, para que no me dé problemas el postgresql.
Esta es la parte problemática del código, las restricciones las añadí por separado.

CREATE TABLE alumnos (
N_alumno serial,
nombres d_nombre NOT NULL,
apellidos d_nombre NOT NULL,
codigo_tutor d_nombre,
Fecha_nacimiento date,
parada_guagua text,
comida text,
CONSTRAINT alumnos_cp PRIMARY KEY(N_alumno)
);

CREATE TABLE padres_tutores (
DNI d_dni,
N_alumno INTEGER,
nombre_tutor d_nombre NOT NULL,
apellidos_tutor d_nombre,
telefono_contacto_1 d_telefono NOT NULL,
telefono_contacto_2 d_telefono NOT NULL,
direccion text,
CONSTRAINT padres_tutores_cp PRIMARY KEY(DNI)
);

ALTER TABLE alumnos ADD CONSTRAINT alumnos_fk FOREIGN KEY
(codigo_tutor)REFERENCES padres_tutores(DNI);

ALTER TABLE padres_tutores
ADD CONSTRAINT padres_tutores_fk FOREIGN KEY (N_alumno) REFERENCES alumnos(N_alumno);

Muchas gracias por vuestro tiempo...la verdad es que no sé qué hacer.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema doble FOREIGN KEY

Publicado por Roberto (22 intervenciones) el 27/07/2007 08:26:10
Que cosa mas rara... pero tendrá su sentido.
Hasta donde yo llego, creo que eso no es posible, pues el primer insert que hagas cascará por faltar registro en el otro lado y viceversa.

Es lógico que actue así... de eso se trata en la integridad referencial.
Te diria que pruebes a hacerlo dentro de una transacción, pero TAMPOCO te va a funcionar, puer hace 2 dias lo probé yo.

La solución es que quites una de las 2 ó que en el momento del insert desactives la intregirdad referencial y luego la metas.

Creo que será mas facil lo controles por código ya fuera (desde tu propio programa).

salu2 Roberto Alonso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar