(Borrado, actualización en cascada)

¿Cómo debo poner la sentencia sql para que al borrar un registro de la tabla platos se me borren los datos relacionados en la tabla PlatosIdioma, PlatosMenu?
Igualmente cuando actualizo.

1 respuesta

Respuesta
1
Tienes razón, sí se puede. Para ello tienes que relacionar las tablas antes asignando FOREIGN KEYS:
ALTER TABLE PlatosIdioma ADD FOREIGN KEY(idPlato) REFERENCES Platos(idPlato) ON DELETE CASCADE;
Esta instrucción relaciona el idPlato de la tabla principal Platos con la tabla secundaria PlatosIdioma.
Con lo cual cuando ejecutes DELETE FROM Platos WHERE idPlato = '$id' también se eliminaran las filas de PlatosIdioma dónde idPlato sea '$id'.
Aquí tienes una explicación más detallada sobre este funcionamiento:
http://www.programacion.com/bbdd/tutorial/mysql_referencial/7/
Saludos,
iNphYx
¿He estado informándome en internet y he leído algo sobre "on delete cascade" sabes si se puede utilizar en mysql?
Gracias.
¿En las tablas PlatosIdioma y PlatosMenu relacionas el plato correspondiente mediante su identificador verdad?
Me imagino que borras el registro así:
$sql = "DELETE FROM Platos WHERE idPlato = $id";
$res = mysql_query($sql);
Entonces sólo tienes que añadir después:
$sql = "DELETE FROM PlatosIdioma WHERE idPlato = $id";
$res = mysql_query($sql);
$sql = "DELETE FROM PlatosMenu WHERE idPlato = $id";
$res = mysql_query($sql);
No se puede usar DELETE para varias tablas simultáneamente, con lo cual tendrás que hacerlo uno detrás de otro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas