としてマークされた一意の制約を持つテーブルがあります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;
エラーが発生します。BEGIN END
ブロックを終了するときにPostgresの強制制約がチェックされるのはなぜですか?トランザクションの終了時に制約をチェックするべきではありませんか?この動作を変更するにはどうすればよいですか?