外部キー制約を持つ 2 つの単純なテーブルがあります。
CREATE TABLE a(i integer);
ALTER TABLE a ADD CONSTRAINT pkey_a PRIMARY KEY (i);
CREATE TABLE b(j integer);
ALTER TABLE b add CONSTRAINT fkey_ij FOREIGN KEY (j) REFERENCES a (i);
トランザクションの期間中、制約を延期したい
START TRANSACTION;
SET CONSTRAINTS fkey_ij DEFERRED;
次のエラーが表示されます。
[42809] ERROR: constraint "fkey_ij" is not deferrable
私はpostgresのSET CONSTRAINTS
ドキュメントを読んでいますが、なぜこの制約が延期される資格がないのか理解できません:
現在、この設定の影響を受けるのは、UNIQUE、PRIMARY KEY、REFERENCES (外部キー)、および EXCLUDE 制約のみです。NOT NULL および CHECK 制約は、行が挿入または変更されるとすぐに (ステートメントの最後ではなく) 常にチェックされます。DEFERRABLE と宣言されていない一意性と除外制約もすぐにチェックされます。
ドキュメントから何か不足していますか?