MySQL では参照整合性チェックはコミットまで延期できますか?
MySQL では、参照整合性チェックはトランザクションのコミットまで延期されず、即時に実行されます。 。 MySQL ドキュメントで強調されているように、この制限により、外部キーを使用して自分自身を参照するレコードの削除などの特定の操作ができなくなります。
参照整合性チェックの延期に関する問題は、以前にも提起されました。 PoEAA の質問を参照しました。この問題は、単一トランザクション内で複数の関連テーブルにデータを挿入するときに発生します。即時の参照整合性チェックにより、結合テーブルに挿入しようとすると制約エラーが発生する可能性があります。
SQL 標準に従って、制約チェックは延期される必要があります。ただし、MySQL のデフォルトのストレージ エンジンである InnoDB は、現在、SQL ステートメント中に行ごとにそれを強制します。これは、参照レコードまたは親レコードに共有行レベルのロックを設定し、トランザクションの進行を妨げることを意味します。
そのため、ストレージ エンジンとして InnoDB を使用する MySQL では、現在コミットが可能になるまで参照整合性チェックを延期します。この制限により、特定のデータベース操作に課題が生じるため、データベース スキーマを設計する際には慎重な考慮が必要です。
以上がMySQL でコミットするまで参照整合性チェックを延期できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。