ホームページ  >  記事  >  データベース  >  複数のクエリを使用して外部キー制約を持つテーブルを削除できないのはなぜですか?

複数のクエリを使用して外部キー制約を持つテーブルを削除できないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-04 17:32:02967ブラウズ

Why Can't I Drop a Table with Foreign Key Constraints Using Multiple Queries?

偽の外部キー制約の失敗

データベースから area という名前のテーブルを削除しようとすると、外部キーを示すエラー メッセージが発生しました制約の失敗。 area との外部キー関係を持つ他のすべてのテーブルを削除したにもかかわらず、制約は引き続き残りました。

考えられる理由

データベースで使用されるストレージ エンジンである InnoDB通常、外部キーが現在のスキーマの外部のテーブルを参照することは許可されません。したがって、外部キー制約が依然として領域テーブルの削除を妨げている理由は不可解でした。

解決策

さらに調査した結果、特定のデータベース ツールが、 MySQL Query Browser や phpMyAdmin など、クエリごとに新しい接続を開きます。この動作により、複数のクエリ間での変更の伝播が防止されます。この問題を解決するには、単一のクエリ内ですべての削除ステートメントを実行する必要があります。

SET FOREIGN_KEY_CHECKS=0;  -- Disable foreign key checks
DROP TABLE my_first_table_to_drop;
DROP TABLE my_second_table_to_drop;
SET FOREIGN_KEY_CHECKS=1;  -- Re-enable foreign key checks

外部キー チェックを無効にすると、制約エラーを引き起こすことなく、外部キー関係に関係するテーブルを削除できます。その後、外部キー チェックを再度有効にすると、将来の操作に対するデータベースの整合性が確保されます。

以上が複数のクエリを使用して外部キー制約を持つテーブルを削除できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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