ホームページ  >  記事  >  バックエンド開発  >  データ操作のために MySQL の外部キー制約を一時的に無効にする方法は?

データ操作のために MySQL の外部キー制約を一時的に無効にする方法は?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-07 08:43:02387ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。