SET CONSTRAINTS
SET CONSTRAINTS は、現在のトランザクション内の外部キー制約チェックの動作を設定します。
サポートされている構文
SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE }
説明
SET CONSTRAINTS は、現在のトランザクション内で制約チェックの動作を設定します。IMMEDIATE 制約は各ステートメントの最後にチェックされます。DEFERRED 制約は、トランザクションがコミットされるまでチェックされません。各制約には独自の IMMEDIATE または DEFERRED モードがあります。
制約を作成するときは、3 つの特性 (DEFERRABLE INITIALLY DEFERRED、DEFERRABLE INITIALLY IMMEDIATE、NOT DEFERRABLE) のいずれかを割り当てます。3 番目のクラスは常に IMMEDIATE であり、SET CONSTRAINTS コマンドによって変更されることはありません。最初の 2 つのクラスは、指定されたモードですべてのトランザクションを開始しますが、その動作はトランザクション内で SET CONSTRAINTS により変更できます。
SET CONSTRAINTS に制約名のリストを指定すると、それらの制約のみのモードが変更されます。すべての名前付き制約は遅延可能である必要があります。SET CONSTRAINTS
ALL は、すべての遅延可能な制約のモードを変更します。
SET CONSTRAINTS が制約のモードを DEFERRED から IMMEDIATE に変更すると、新しいモードは遡及的に有効になります。Aurora DSQL は、トランザクションの最後まで遅延されていたはずの未処理のデータ変更を即座にチェックします。このような制約に違反すると、SET CONSTRAINTS コマンドは失敗し、制約モードは変更されません。
遅延オプション (DEFERRABLE、NOT
DEFERRABLE、INITIALLY DEFERRED、INITIALLY IMMEDIATE) の説明については、「CREATE TABLE」ページの「遅延可能性」を参照してください。
外部キー制約のみ
Aurora DSQL では、SET CONSTRAINTS は外部キー制約にのみ適用されます。プライマリキー、一意、NOT NULL、および CHECK 制約は、SET CONSTRAINTS ALL DEFERRED を実行していても、行が挿入または変更されたときに常に即座にチェックされます。
注意事項
Aurora DSQL は、現在のトランザクション内でのみ制約の動作を変更します。SET CONSTRAINTS を使用するには、明示的なトランザクションブロック内で実行します。
互換性
このコマンドは SQL 標準で定義されている動作に準拠していますが、Aurora DSQL は外部キー制約の遅延のみをサポートするという制限があります。