如何暫時停用MySQL中的外鍵約束?

Mary-Kate Olsen
發布: 2024-11-07 09:23:03
原創
641 人瀏覽過

How to Temporarily Disable Foreign Key Constraints in MySQL?

暫時停用MySQL 中的外鍵約束

在MySQL 中,外鍵約束強制引用完整性,確保相關表之間的數據一致性。但是,在某些情況下,需要暫時停用這些約束,例如在模型刪除期間。

考慮以下具有相互外鍵關係的Django 模型:

class Item(models.Model):
    style = models.ForeignKey('Style', on_delete=models.CASCADE)

class Style(models.Model):
    item = models.ForeignKey('Item', on_delete=models.CASCADE)
登入後複製

嘗試刪除實例連續使用兩個模型可能會導致錯誤:

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

cursor.execute("DELETE FROM myapp_style WHERE n = %s", n)
transaction.commit_unless_managed()
登入後複製

要繞過此外鍵約束,您可以使用以下方法之一暫時停用它:

1.停用鍵:

ALTER TABLE myapp_item DISABLE KEYS;
登入後複製

一旦重新開啟或關閉表,此命令將重新啟用約束。

2. SET FOREIGN_KEY_CHECKS:

SET FOREIGN_KEY_CHECKS = 0;  # Disable foreign key checks
登入後複製

刪除操作後記得重新啟用約束:

SET FOREIGN_KEY_CHECKS = 1;  # Re-enable foreign key checks
登入後複製
刪除操作後記得重新啟用約束:

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!