pg_catalog

PostgreSQL トリガー一覧

pg_trigger

トリガー一覧SQL

tgisinternal = falseの条件で内部的に生成されるトリガーを除く事ができます。

select tn.nspname as table_schema,c.relname as table_name
,r.tgname as trigger_name
,pn.nspname ,p.proname,prokind
,case 
when r.tgenabled = 'O' then 'enable'
when r.tgenabled = 'D' then 'disable'
else '?' end tgenabled
,tgconstrindid
from pg_trigger r
inner join pg_proc p on r.tgfoid = p.oid     -- 関数名
inner join pg_class c on r.tgrelid = c.oid   -- テーブル名
inner join pg_namespace tn on c.relnamespace = tn.oid --テーブルのスキーマ
inner join pg_namespace pn on p.pronamespace = pn.oid --プロシージャのスキーマ
where 1=1
and r.tgisinternal = false
--table_name
--and c.relname='kudamono'
order by relname
;
トリガー一覧SQL実行例
 table_schema | table_name |   trigger_name   | nspname |   proname    | prokind | tgenabled | tgconstrindid
--------------+------------+------------------+---------+--------------+---------+-----------+---------------
 sooni        | kudamono   | kudamono_trigger | sooni   | trg_kudamono | f       | disable   |             0
(1 行)


myposdb=>
トリガーの無効化
alter table kudamono disable trigger kudamono_trigger
;
トリガーの有効化
alter table kudamono enable trigger kudamono_trigger
;
 table_schema | table_name |   trigger_name   | nspname |   proname    | prokind | tgenabled | tgconstrindid
--------------+------------+------------------+---------+--------------+---------+-----------+---------------
 sooni        | kudamono   | kudamono_trigger | sooni   | trg_kudamono | f       | enable    |             0
(1 行)


myposdb=> alter table kudamono disable trigger kudamono_trigger;
ALTER TABLE
myposdb=> select tn.nspname as table_schema,c.relname as table_name
myposdb-> ,r.tgname as trigger_name
myposdb-> ,pn.nspname ,p.proname,prokind
myposdb-> ,case
myposdb-> when r.tgenabled = 'O' then 'enable'
myposdb-> when r.tgenabled = 'D' then 'disable'
myposdb-> else '?' end tgenabled
myposdb-> ,tgconstrindid
myposdb-> from pg_trigger r
myposdb-> inner join pg_proc p on r.tgfoid = p.oid     -- 関数名
myposdb-> inner join pg_class c on r.tgrelid = c.oid   -- テーブル名
myposdb-> inner join pg_namespace tn on c.relnamespace = tn.oid --テーブルのスキーマ
myposdb-> inner join pg_namespace pn on p.pronamespace = pn.oid --プロシージャのスキーマ
myposdb-> where 1=1
myposdb-> and r.tgisinternal = false
myposdb-> --table_name
myposdb-> --and c.relname='kudamono'
myposdb-> order by relname
myposdb-> ;
 table_schema | table_name |   trigger_name   | nspname |   proname    | prokind | tgenabled | tgconstrindid
--------------+------------+------------------+---------+--------------+---------+-----------+---------------
 sooni        | kudamono   | kudamono_trigger | sooni   | trg_kudamono | f       | disable   |             0
(1 行)


myposdb=>

トリガーサンプル

PostgreSQL トリガーサンプル
トリガーとして動作させるファンクションを事前に作成(create function)し、次にそのファンクションをテーブルへ関連づける事(create trigger)でトリガーの定義が完成します。 トリガーとして動作させるファンクションを作...
スポンサーリンク