MySQL es el motor de DB. Puede usar múltiples motores de almacenamiento. MyISAM es el motor de almacenamiento predeterminado para MySQL y no admite claves externas. InnoDB es otro motor de almacenamiento que admite claves externas. Debe especificar ENGINE = InnoDB porque MySQL usará MyISAM de manera predeterminada.
ON DELETE CASCADE eliminará todas las filas de una tabla que tengan una clave externa que haga referencia a una clave que se elimine. Creo que es peligroso y frustra mucho el propósito de la restricción de la clave externa, así que evitaría usarla, pero esta es solo mi opinión personal.
Digamos que tienes:
+-------+-------+
| ordID | proID |
+-------+-------+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 2 |
+-------+-------+
Y en OrdersItems tiene FOREIGN KEY (proID
) Referencias Productos (proID
) ON DELETE CASCADE.
Entonces, si alguien se queda
DELETE FROM Products WHERE proID = 2
A continuación, también se eliminan las filas con OrdID 4 y 5 (que cae en cascada).
¿uso la cascada o no? ¿Qué tal en la actualización –
No usaría ninguna de las dos cosas? Sin embargo, si usted quiere usarlos, depende totalmente de usted. Sugiero leerlos completamente en la API de MySQL antes de tomar su decisión: http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html –