Cita: Quiza si te expico esto, veras que estas equivocado. Cuando defines una clave externa, puedes usar varias opciones: ON DELETE y ON UPDATE. Los parametros que se pueden usar con estas opciones son principalmente.
- CASCADE: Borrar o actualizar en cascada.
- SET NULL: Actualizar el campo al valor NULL.
No estoy
completamente equivocado, ya que según el manual de referencia de MySQL:
Cita: SET NULL: Borra o actualiza el registro en la tabla padre y establece en NULL la o las columnas de clave foránea en la tabla hija. Esto solamente es válido si las columnas de clave foránea no han sido definidas como NOT NULL. MySQL 5.0 soporta tanto ON DELETE SET NULL como ON UPDATE SET NULL.
Por lo que en cualquier otra situación, la restricción está activa.
En todo caso puedes decir que me había olvidado de agregar esta posibilidad.
Tal vez mi mayor error sea teórico: Cuando pongo una FK, es porque
necesito esa integridad referencial. Ponerla
por si se necesita, no se me da en muchos casos, así que rara vez la tengo en cuenta.... Habitualmente en ese caso administro el problema a nivel de aplicación (formularios), para evitar que el usuario ponga cosas sin sentido.