MySQL | 外部キー制約のチェックを無効にする方法(SET foreign_key_checks = 0;)

うさぎ
うさぎ

ためしにテーブルにデータを入れたいんだけど外部キーエラーでうまくいれられない

うさぎ
うさぎ

一時的に外部キーをはずしたらいいんじゃない

SET foreign_key_checks = 0;


「SET foreign_key_checks = 0;」とはMySQLのSQLコマンドの1つで、外部キー制約のチェックを無効にするために使用されます。


外部キー制約は、異なるテーブル間の関係性を定義するために使用され、参照されるテーブルのキーと参照するテーブルのキーが一致することを強制します。

この制約が有効な場合、データベースの更新や削除操作に制限が加えられ、関連するデータが正しく維持されることを保証します。


しかし、外部キー制約が無効になっている場合、「SET foreign_key_checks = 0;」コマンドを使用することで、関連するデータが正しく維持される保証はありません。

これは、データベースに誤ったデータが挿入される可能性があるためです。

通常、外部キー制約を無効にすることは推奨されませんが、いくつかの特定のシナリオで必要になる場合があります。

例えば、大規模なデータベースの更新やバッチ処理を実行する場合、外部キー制約が無効になっていることで、処理時間を短縮できる場合があります。

しかし、必要な場合を除き、外部キー制約を無効にすることは避けることが推奨されます。データベースのデータ整合性を維持するために、外部キー制約を有効にすることが重要です。

「SET foreign_key_checks = 0;」を使用する手順


MySQLクライアントを開始します。MySQLクライアントには、コマンドラインから接続する方法とGUIツールを使用する方法があります。

  • 1. データベースに接続します。データベース接続には、ユーザー名とパスワードが必要です。データベース接続方法は、以下の例のようになります。
mysql -u username -p password
# ユーザーネームがusagi、パスワードがrabbitの場合
mysql -u usagi -p rabbit
  • 2. 外部キー制約のチェックを無効にするために、「SET foreign_key_checks = 0;」コマンドを実行します。
SET foreign_key_checks = 0;

おわり!簡単です

確認方法


外部キー制約が無効になったことを確認します。以下は、外部キー制約が無効になったかどうかを確認する方法です。

SHOW VARIABLES LIKE 'foreign_key_checks';



このコマンドを実行すると、外部キー制約が有効かどうかが表示されます。

外部キー制約を有効に戻す方法


外部キー制約を有効に戻すにはSET foreign_key_checks = 1;」コマンドを実行します。

SET foreign_key_checks = 1;



以上が、「SET foreign_key_checks = 0;」を使用する手順です。ただし、外部キー制約を無効にする前に、必ずバックアップを取得することをお勧めします。また、外部キー制約を無効にしたまま、誤ったデータを挿入しないように注意してください。