以下のエディターは、テーブルを削除するときに外部キー制約を無視する MySQL の簡単な実装を提供します。編集者はこれが非常に良いものだと思ったので、皆さんの参考として今から共有します。エディターに従って見てみましょう。テーブルの削除は特に一般的ではありません。テーブルを削除するときは、特に注意が必要です。ただし、開発プロセス中にスキーマ設計に問題が見つかり、既存のデータベース内のすべてのテーブルを削除して再作成することはよくあります。また、テスト中にもデータベース内のすべてのテーブルを再作成する必要があります。もちろん、多くの自動ツールでもそのようなことを行うことができます。
テーブルを削除するときに、次のエラー メッセージが表示されることがあります: ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
しかし、これは受け入れられないことがよくあります。一方で、テーブルが多すぎる場合、手動での並べ替えは少し受け入れられません。また、並べ替えのための自動ツールはありません (実際、不可能ではありません)。したがって、MySQL は、必要に応じて外部キー制約をチェックするかどうかを設定するための
変数通常、これを行うことをお勧めします: まず、すべての DROP ステートメントを自動的に生成し、MyDatabaseName をデータベース名に置き換えます:
SELECT concat('DROP TABLE IF EXISTS ', table_name, ';') FROM information_schema.tables WHERE table_schema = 'MyDatabaseName';
次に、次のコードを追加して、生成されたコードの前後に FOREIGN_KEY_CHECKS 変数を設定します。ステートメント:
SET FOREIGN_KEY_CHECKS = 0 -- DROP语句 SET FOREIGN_KEY_CHECKS = 1;
ただし、最後の文を忘れても問題ありません。この変数は
Session に基づいており、クライアントを閉じて接続を再確立すると、この変数はデフォルトに戻ります。価値 。グローバル スコープで外部キー制約をチェックする必要がない場合 (この状況は比較的まれです)、次のようにすることができます: SET GLOBAL FOREIGN_KEY_CHECKS = 0;
set @@global.FOREIGN_KEY_CHECKS = 0;
以上がテーブルを削除するときに外部キー制約を無視するための MySQL のコード例の共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。