1. 程式人生 > 實用技巧 >MySQL刪除外來鍵約束問題

MySQL刪除外來鍵約束問題

當我們在一個表中新增欄位約束的時候:

ALTER TABLE product ADD CONSTRAINT product_fk FOREIGN KEY(category_id) REFERENCES category(id);

會認為我的外來鍵約束名稱為product_fk, 然後當我們想刪除時:

ALTER TABLE product DROP FOREIGN KEY product_fk;

會出現以下的錯誤:

<e>Query: alter table product drop foreign key product_fk

Error Code: 1025
Error on rename of 
'.\web_day09\product' to '.\web_day09\#sql2-2330-1' (errno: 152)

這是因為欄位的外來鍵約束名並不是product_fk 。

我們在資料庫中執行一下命令:

SHOW CREATE TABLE product

控制檯會顯示:

Table    Create Table
product    CREATE TABLE `product` (
  `pid` varchar(32) NOT NULL,
  `pname` varchar(40) DEFAULT NULL,
  `price` double DEFAULT NULL,
  `category_id` varchar(
32) DEFAULT NULL, PRIMARY KEY (`pid`), KEY `category_id` (`category_id`), CONSTRAINT `product_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `category` (`cid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8

從建表語句中我們發現外來鍵約束名稱是:

product_ibfk_1

然後我們再執行外來鍵刪除操作:

<n>Query: alter table product drop foreign key product_ibfk_1

0 row(s) affected

刪除成功。