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