ページの先頭行へ戻る
Enterprise Postgres 17 リリース情報

2.2.25 AFTERトリガが存在しなくなった場合の動作の変更

非互換

Fujitsu Enterprise Postgres 16 SP1では、AFTERトリガが動作する条件を満たした後に、当該トリガが存在しなくなった場合の動作を変更しました。

Fujitsu Enterprise Postgres 16以前ではエラーとなっていましたが、Fujitsu Enterprise Postgres 16 SP1では正常終了します。

Fujitsu Enterprise Postgres 16以前の場合
postgres=# CREATE TABLE pkt (id int PRIMARY KEY);
CREATE TABLE
postgres=# CREATE TABLE fkt (id int PRIMARY KEY, fk int REFERENCES pkt INITIALLY DEFERRED);
CREATE TABLE
postgres=# INSERT INTO pkt VALUES (1);
INSERT 0 1
postgres=# BEGIN;
BEGIN
postgres=*# INSERT INTO fkt VALUES (101, 1);
INSERT 0 1
postgres=*# DROP TABLE pkt CASCADE;
NOTICE:  drop cascades to constraint fkt_fk_fkey on table fkt
DROP TABLE
postgres=*# COMMIT;
ERROR:  relation 16422 has no triggers
Fujitsu Enterprise Postgres 16 SP1の場合
postgres=# CREATE TABLE pkt (id int PRIMARY KEY);
CREATE TABLE
postgres=# CREATE TABLE fkt (id int PRIMARY KEY, fk int REFERENCES pkt INITIALLY DEFERRED);
CREATE TABLE
postgres=# INSERT INTO pkt VALUES (1);
INSERT 0 1
postgres=# BEGIN;
BEGIN
postgres=*# INSERT INTO fkt VALUES (101, 1);
INSERT 0 1
postgres=*# DROP TABLE pkt CASCADE;
NOTICE:  drop cascades to constraint fkt_fk_fkey on table fkt
DROP TABLE
postgres=*# COMMIT;
COMMIT

対処方法

ありません。