我有一个带有唯一约束的表,标记为DEFERRABLE INITIALLY DEFERRED;
然后我执行下一个查询:
START TRANSACTION;
INSERT INTO "T" VALUES (1,2);
INSERT INTO "T" VALUES (1,2);
INSERT INTO "T" VALUES (1,2);
ROLLBACK;
一切都很顺利。但是如果我尝试执行
START TRANSACTION;
BEGIN;
INSERT INTO "T" VALUES (1,2);
INSERT INTO "T" VALUES (1,2);
INSERT INTO "T" VALUES (1,2);
END;
ROLLBACK;
我得到一个错误。为什么 Postgres 在退出BEGIN END
块时强制进行约束检查?不应该在事务结束时检查约束吗?我怎样才能改变这种行为?