非互換
FUJITSU Enterprise Postgres 14では、下記の場合、パーティションの子テーブルのトリガ動作を無効に変更します。
親テーブルに対して、トリガ動作を無効にする。かつ、
子テーブルを新規作成する。
パーティションの子テーブルのトリガ動作が有効になります。
[例]
=# CREATE FUNCTION tgf() RETURNS trigger as $$ $# begin $# raise notice 'insert'; $# end; $# $$ language plpgsql; CREATE FUNCTION =# CREATE TABLE trgfire (i int) PARTITION BY RANGE (i); CREATE TABLE =# CREATE TRIGGER tg AFTER INSERT ON trgfire FOR EACH ROW EXECUTE FUNCTION tgf(); CREATE TRIGGER =# ALTER TABLE trgfire DISABLE TRIGGER tg; ALTER TABLE =# CREATE TABLE trgfire1 PARTITION OF trgfire FOR VALUES FROM (1) TO (10); CREATE TABLE =# SELECT tgrelid::regclass, tgenabled -# FROM pg_trigger -# WHERE tgrelid::regclass IN (SELECT oid from pg_class where relname LIKE 'trgfire%') -# ORDER BY tgrelid::regclass::text; tgrelid | tgenabled ----------+----------- trgfire | D trgfire1 | O (2 rows)
パーティションの子テーブルのトリガ動作が無効になります。
[例]
=# CREATE FUNCTION tgf() RETURNS trigger as $$ $# begin $# raise notice 'insert'; $# end; $# $$ language plpgsql; CREATE FUNCTION =# CREATE TABLE trgfire (i int) PARTITION BY RANGE (i); CREATE TABLE =# CREATE TRIGGER tg AFTER INSERT ON trgfire FOR EACH ROW EXECUTE FUNCTION tgf(); CREATE TRIGGER =# ALTER TABLE trgfire DISABLE TRIGGER tg; ALTER TABLE =# CREATE TABLE trgfire1 PARTITION OF trgfire FOR VALUES FROM (1) TO (10); CREATE TABLE =# SELECT tgrelid::regclass, tgenabled -# FROM pg_trigger -# WHERE tgrelid::regclass IN (SELECT oid from pg_class where relname LIKE 'trgfire%') -# ORDER BY tgrelid::regclass::text; tgrelid | tgenabled ----------+----------- trgfire | D trgfire1 | D (2 rows)
対処方法
ありません。