首頁  >  文章  >  後端開發  >  如何暫時停用 MySQL 中的外鍵約束以進行資料操作?

如何暫時停用 MySQL 中的外鍵約束以進行資料操作?

Susan Sarandon
Susan Sarandon原創
2024-11-07 08:43:02381瀏覽

How to Temporarily Disable Foreign Key Constraints in MySQL for Data Manipulation?

在MySQL 中停用外鍵約束以進行臨時資料操作

在MySQL 中,外鍵約束透過防止表之間的關係不一致來確保資料完整性。然而,這些約束有時會阻礙快速的資料操作。

問題:

在 Django 中刪除模型實例時,可能會因為外鍵約束而發生錯誤。例如:

cursor.execute("DELETE FROM myapp_item WHERE n = %s", n)
transaction.commit_unless_managed()  # a foreign key constraint fails here

cursor.execute("DELETE FROM myapp_style WHERE n = %s", n)
transaction.commit_unless_managed()

解決方案:

要暫時停用外鍵約束並允許刪除,您可以使用DISABLE KEYS 指令或將FOREIGN_KEY_CHECKS 變數設為0.

使用DISABLE KEYS:

DISABLE KEYS

此指令停用目前會話的所有外鍵約束。

使用 SET FOREIGN_KEY_CHECKS 變數:

SET FOREIGN_KEY_CHECKS=0;

此指令將全域 FOREIGN_KEY_CHECKS 變數設為 0,停用所有外鍵限制。

重要:執行所需資料後操作時,請記住透過將 FOREIGN_KEY_CHECKS 設定回 1 來重新啟用外鍵約束:

SET FOREIGN_KEY_CHECKS=1;

以上是如何暫時停用 MySQL 中的外鍵約束以進行資料操作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn