2012-03-28 147 views
29

所以我正在處理幾個表,並且它們之間存在一些數據不一致......一個或兩個表在特定表上有一個外鍵約束(稱爲表X) ,但該表具有包含外鍵列的多行。MySQL:刪除一行忽略外鍵約束

我想要做的是刪除表X中的重複行,但外鍵約束阻止我這樣做。有沒有辦法強制刪除行而忽略外鍵約束,因爲我知道我在做什麼?

+1

要知道,你可以搞砸你的數據庫,而使用SET FOREIGN_KEY_CHECKS = 0 。只有當你確切地知道結果會是什麼時才使用它。我僅將它用於我的PHP備份腳本。 – DevWL 2014-02-15 15:16:00

+0

當然,這樣做會很危險,只有當我確切地知道我在做什麼時纔會使用它。 – 2014-02-16 02:37:53

回答

88

SET foreign_key_checks = 0

這將防止從MySQL的檢查外鍵。確保在完成後將其重新設置爲1。

此外,您可以隨時刪除外鍵,然後再添加它,如果你想隻影響一個奇異的關鍵

ALTER TABLE t DROP FOREIGN KEY fk

+0

謝謝,這很方便:) – 2012-03-28 19:16:43

+2

我想你不必設置外鍵檢查回1如果你立即註銷會議。 – dewd 2014-04-28 11:34:35

+0

我有多個表,所以我想從所有表中刪除此字段,所以我怎麼能做到這一點。這將無法正常工作 – karan 2015-07-21 15:23:21