Claves externas en mysql, notas

No cabe duda que para garantizar la integridad en una base de datos es imprescindible utilizar claves extranjeras (foreign keys, claves externas, etc.), pero a la par con su importancia está su difícil manejo en algunas ocasiones y sumado esto a la escases de información referente a errores de mysql muchas veces nos encontramos desamparados a la hora de crear tablas con este tipo de claves.

Para evitar errores del tipo Can't create table (errno: 121), que no te dicen nada, debemos tener en cuenta los siguientes aspectos a la hora de crear foreign keys:

  1. los campos de origen y destino deben ser del mismo tipo, misma longitud y con los mismos atributos (si uno es unsigned el otro también, si es int (3) el otro debe ser int y con longitud 3 también)
  2. los campos de origen y destino ambos deben ser índices (algunas aplicaciones al crear la clave ya te crean el índice en el campo origen pero el campo de destino siempre tienes que crearlo como índice, no es necesario que sea una primary key solo index)
  3. el nombre que se le dé a la foreign key debe ser único en toda la base de datos (cosa que no ocurre en un índice normal que se puede repetir el nombre)
  4. si el campo destino es auto increment no es necesario que el origen lo sea (esto es obvio pero a lo mejor puede causar confusión con el punto 1)
  5. solo pueden crearse foreign key en tablas con motor innodb.

Espero que les sea útil y no les den tantos dolores de cabeza como a mi la creación de tablas en mysql con claves externas.

Comentarios