我想知道哪个表存储触发器的create语句,例如
CREATE TRIGGER t_update_sal
AFTER INSERT OR UPDATE
ON employees
FOR EACH ROW
EXECUTE PROCEDURE t_update_sal_v1();
答案 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_class
,pg_attribute
,pg_namespace
等处获取的其他信息。
Soni指出,information_schema.triggers
视图中有一个用户友好的界面。