SQL - Delete y Update

   
Vista:

Delete y Update

Publicado por Jorge (1 intervención) el 17/03/2008 00:40:49
Hola, ¿sabría alguien decirme cuándo tiene sentido utilizar (una u otra) las opciones NO ACTION, SET NULL, SET DEFAULT o CASCADE en las acciones de mantenimiento de la integridad referencial con las FOREIGN KEY en ON UPDATE y ON DELETE?

Gracias.
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:Delete y Update

Publicado por Leo (16 intervenciones) el 17/03/2008 02:59:23
create tabla1
(
A int,
B int,
C int,
primary key(A)
)

create tabla2
(
A2 int,
D int,
E int,
foreign key A2 references tabla1
)

tabla1
1 2 3 (registro 1)
2 3 6 (reg 2)
2 3 4 (reg 3)

tabla2
1 2 4 (reg 4)
1 3 6 (reg 5)
2 3 5 (reg 6)

A2 debe tener siempre valores que estén en A.
Si alguien borra reg1, si la opcion ON DELETE CASCADE está, entonces se borran reg4 y reg5, porque tienen un valor inválido de A2. Si esa opcion no está presente, se rechaza la acción.
Si en cambio al borrar reg1, se encuentra ON DELETE SET NULL, tabla2 cambia reg4 y reg5 por:
null 2 4 (reg4)
null 3 6 (reg5)
SET DEFAULT pone el valor default en vez de null. El valor default se declara al crear la tabla.
Si alguien borra reg2, no pasa nada pq el valor "2" sigue siendo válido por reg3.
Nunca use NO ACTION pero supongo que dejaría que se borre reg1 sin cambiar nada de tabla2

Suerte!
Leo
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