Integridad referencial en MySQL

No podemos s�lo eliminar una restricci�n de clave for�nea como si fuera un �ndice ordinario. Veamos que sucede cuando lo intentamos.

mysql> ALTER TABLE venta DROP FOREIGN KEY;
ERROR 1005: Can't create table '.test#sql-228_4.frm' (errno: 150)

Para eliminar la clave for�nea se tiene que especificar el ID que ha sido generado y asignado internamente por MySQL a la clave for�nea. En este caso, se puede usar la sentencia SHOW CREATE TABLE para determinar dicho ID.

mysql> SHOW CREATE TABLE venta;
+--------+-----------------------------------------------------+
| Table  | Create Table                                        |
+--------+-----------------------------------------------------+
| venta  | CREATE TABLE 'venta' (                              |
|        |  'id_factura' int(11) NOT NULL default '0',         |
|        |  'id_cliente' int(11) NOT NULL default '0',         |
|        |  'cantidad' int(11) default NULL,                   |
|        |  PRIMARY KEY  ('id_factura'),                       |
|        |  KEY 'id_cliente' ('id_cliente'),                   |
|        |  CONSTRAINT '0_22' FOREIGN KEY ('id_cliente')       |
|        |  REFERENCES 'cliente' ('id_cliente') ) TYPE=InnoDB  |
+-------+------------------------------------------------------+
1 row in set (0.00 sec)

En nuestro ejemplo, la restricci�n tiene el ID 0_22 (es muy probable que este valor sea diferente en cada caso).

mysql> ALTER TABLE venta DROP FOREIGN KEY 0_22;
Query OK, 3 rows affected (0.23 sec)
Records: 3  Duplicates: 0  Warnings: 0

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR