Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/02/2008, 10:33
Avatar de cmarti
cmarti
 
Fecha de Ingreso: noviembre-2003
Ubicación: Buenos Aires - Argentina
Mensajes: 442
Antigüedad: 21 años, 4 meses
Puntos: 1
Integridad Referencial en MySQl 5

Me gustaría poder ir cerrando este post con un ejemplo este tema de la integridad referencial.

Según se indica en las FAQs, las tablas MyISAM hasta la versión 5.0 de MySQL no soportan integridad referencia no así las tablas del tipo InnoDB. Bien.

El punto es que husmeando por ahí, ví el siguiente código:

Código PHP:
[CONSTRAINT símboloFOREIGN KEY (nombre_columna, ...)
REFERENCES nombre_tabla (nombre_columna, ...)
[
ON DELETE {CASCADE SET NULL NO ACTION
RESTRICT}]
[
ON UPDATE {CASCADE SET NULL NO ACTION
RESTRICT}] 
1) Si no lo he malinterpretado, aún teniendo tablas del tipo MyISAM puedo establecer integridad referencial tanto para la eliminación como la actualización. Correcto?
2) Cómo se entiende una integridad referencial sin FK?
3) Puede que esté muy equivocado pero si tengo dos tablas relacionadas (supongamos Empleados, Capacitacion) la columna idemple de la tabla Capacitacion no podría ser concretaemnte la FK de la tabla empleados?
4) Supongamos que insisto para un proyecto grande en basarlo en tablas MyISAM (siguiendo el ejemplo) y deseo eliminar un empleado que casualmente ha sido capacitado. Debería programar que si su id se encuentra en la tabla capacitación, "esa eliminación" NO SE PROVOQUE. Correcto?
5) Ahora (basándonos en 4), cuál sería el problema? Que debería escribir líneas y líneas de código para mantener esa integridad referencial bajo MyISAM?
6) En este u otro foro consultaba cómo debían manejarse los errores si el diseño de la base se desarrolla bajo InnoDB y si se intenta eliminar un registro con relación a otra tabla. Digo, el sistema emitiría un mensaje de error probablemente en inglés, cómo se maneja, debe ser customizado?

MGs
__________________
When all else is lost the future still remains.