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