DEFERRABLE 主キーチェックの強制
DEFERRABLE 主キー制約または一意キー制約の動作は、その仕様によって異なります。 PostgreSQL では、次の適用シナリオを検討します。
1. DEFERRABLE INITIALLY IMMEDIATE
DEFERRABLE INITIALLY IMMEDIATE の制約は、ご想像のとおり、各行の更新ではなく、各ステートメントの後に適用されます。これは、次のことを意味します。
2. DEFERRABLE INITIALLY DEFERRED
DEFERRABLE INITIALLY DEFERRED の制約はトランザクションの終了時に適用され、同じトランザクション内で複数の更新が可能になります。これは、複数のステートメントにわたって制約を適用する場合に便利です。
3.遅延不可能な制約
NOT DEFERRABLE として宣言された制約は、行が更新されるたびにチェックされ、より厳格になります。これにより、コマンドの最後に制約が満たされる場合でも、制約違反が発生する可能性があります。
歴史的観点
PostgreSQL の以前のバージョンでは、遅延不可能な制約行が更新されるたびにチェックも行われました。この動作はバグと考えられ、PostgreSQL 9.1 で修正されました。
実用的な意味
以上がPostgreSQL の DEFERRABLE 主キー チェックの強制はどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。