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

刪除成功。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM