SET CONSTRAINTSは、現在のトランザクションにおける制約の評価方法を設定します。 IMMEDIATEモードでは、一つの文の実行が終わる毎に制約がチェックされます。 DEFERREDモードでは、トランザクションが終了するまで制約はチェックされません。
制約はその生成時において、常にINITIALLY DEFERRED、 INITIALLY IMMEDIATE DEFERRABLE、 INITIALLY IMMEDIATE NOT DEFERRABLEの三つのうちのいずれかの特徴を持ちます。三番目のものは、SET CONSTRAINTSコマンドで有効になりません。
今のところ、外部キーの制約だけがこの設定の影響を受けます。CHECK 制約や UNIQUE 制約は、常に初期状態で直接評価され、遅延されません(常にINITIALLY IMMEDIATE NOT DEFERRABLE)。