MySQL での参照整合性チェックの延期: 可能ですか?
MySQL では、参照整合性チェックはコミットまで延期されません。 MySQL ドキュメントで説明されているように、
InnoDB は UNIQUE 制約と FOREIGN KEY 制約を行ごとにチェックします。外部キー チェックを実行するとき、InnoDB は参照する必要がある子レコードまたは親レコードに行レベルの共有ロックを設定します。 InnoDB は外部キー制約を即座にチェックします。チェックはトランザクションのコミットまで延期されません。
この動作は、制約チェックをトランザクションの終了まで延期する必要があると規定する SQL 標準に反します。ただし、InnoDB は現在、遅延制約チェックをサポートしていません。
データ操作への影響
参照整合性チェックを即時実施すると、関連データの挿入または変更時に問題が発生する可能性があります。 。たとえば、別のテーブルの親レコードを参照するテーブルに子レコードを挿入しようとすると、MySQL は即座に外部キー チェックを実行します。親レコードがまだ存在しないか削除されている場合、挿入操作は失敗します。
遅延チェックの代替手段
MySQL は真の遅延制約チェックをサポートしていません。 、その影響をシミュレートできる回避策があります:
これらの代替方法は、遅延制約チェックの動作を完全に複製するわけではないことに注意することが重要です。データの整合性を確保するために、追加の手動介入やコードの変更が必要になる場合があります。
以上がMySQL で参照整合性チェックを延期できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。