Postgres触发器

时间:2015-05-13 06:55:55

标签: postgresql triggers

我想知道哪个表存储触发器的create语句,例如

CREATE TRIGGER t_update_sal
  AFTER INSERT OR UPDATE
  ON employees
  FOR EACH ROW
  EXECUTE PROCEDURE t_update_sal_v1();

3 个答案:

答案 0 :(得分:2)

您可以在information_schema.triggers上挖掘该信息。

答案 1 :(得分:1)

information_schema.triggers仅存储部分触发器定义。

您可以使用pg_get_triggerdef()获取触发器的完整SQL:

select trg.tgname, 
       pg_catalog.pg_get_triggerdef(trg.oid, true)
from pg_trigger trg
  join pg_class tbl on trg.tgrelid = tbl.oid
  join pg_namespace sch on tbl.relnamespace = sch.oid
where tbl.relname = 'employees'
  and sch.nspname = 'public'
order by 1;

答案 2 :(得分:0)

没有表存储触发器的“create statement”。 SQL被解析,执行和丢弃。

pg_dump重新构建系统目录中的语句:主要是pg_catalog.pg_trigger,其中包含从pg_classpg_attributepg_namespace等处获取的其他信息。

Soni指出,information_schema.triggers视图中有一个用户友好的界面。