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

2.2.158 パーティションの子テーブルのトリガ動作の変更

非互換

FUJITSU Enterprise Postgres 14では、下記の場合、パーティションの子テーブルのトリガ動作を無効に変更します。

FUJITSU Enterprise Postgres 13 SP1以前の場合

パーティションの子テーブルのトリガ動作が有効になります。

[例]

=# 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)
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 | D
(2 rows)

対処方法

ありません。