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)でトリガーの定義が完成します。 トリガーとして動作させるファンクションを作...