非互換
Fujitsu Enterprise Postgres 16 SP1では、AFTERトリガが動作する条件を満たした後に、当該トリガが存在しなくなった場合の動作を変更しました。
Fujitsu Enterprise Postgres 16以前ではエラーとなっていましたが、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; ERROR: relation 16422 has no triggers
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
対処方法
ありません。