當我們在 MySQL 中想要刪除一個有外鍵約束的數據表時,通常會遇到下面這個錯誤:
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
這是因為有時候存在在這個表中定義的外鍵,并且這個外鍵約束還被其他表所引用,導致無法直接刪除,下面介紹兩種解決方案。
方案一:刪除外鍵約束后刪除表。
ALTER TABLE `表名` DROP FOREIGN KEY `外鍵名`; DROP TABLE `表名`;
上面的代碼先使用了 ALTER TABLE 語句刪除了外鍵約束,接著用 DROP TABLE 語句刪除了表。
方案二:刪除其他引用表上的約束。
SET FOREIGN_KEY_CHECKS=0; DROP TABLE `引用表一`; DROP TABLE `引用表二`; DROP TABLE `表名`; SET FOREIGN_KEY_CHECKS=1;
這段代碼首先使用了 SET FOREIGN_KEY_CHECKS=0 禁用了外鍵檢查,接著分別刪除了引用表和被引用的表,最后使用 SET FOREIGN_KEY_CHECKS=1 啟用了外鍵檢查。
通過以上兩種方式可以成功刪除有外鍵約束的數據表。