我有 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
我正在阅读postgresSET CONSTRAINTS
文档,但不明白为什么这个约束没有资格被推迟:
目前,只有 UNIQUE、PRIMARY KEY、REFERENCES(外键)和 EXCLUDE 约束受此设置影响。NOT NULL 和 CHECK 约束总是在插入或修改行时立即检查(而不是在语句末尾)。还立即检查尚未声明 DEFERRABLE 的唯一性和排除性约束。
我是否遗漏了文档中的某些内容?