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

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

Susan Sarandon
發布: 2024-11-07 08:43:02
原創
493 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板