Sar*_*nan 36 sql database postgresql
我有一个要求,我必须得到与给定表/视图关联的触发器列表.
任何人都可以帮我找到PostgreSQL中表的触发器吗?
Viv*_* S. 50
这将返回您想知道的所有细节
select * from information_schema.triggers
Run Code Online (Sandbox Code Playgroud)
或者如果您想对特定表的结果进行排序,那么您可以尝试
SELECT event_object_table
,trigger_name
,event_manipulation
,action_statement
,action_timing
FROM information_schema.triggers
WHERE event_object_table = 'tableName' -- Your table name comes here
ORDER BY event_object_table
,event_manipulation
Run Code Online (Sandbox Code Playgroud)
以下将返回具有触发器的表名
select relname as table_with_trigger
from pg_class
where pg_class.oid in (
select tgrelid
from pg_trigger
)
Run Code Online (Sandbox Code Playgroud)
Erw*_*ter 31
视图的问题information_schema.triggers(除了慢)是根据文档:
视图触发器包含当前用户拥有的表和视图在当前数据库中定义的所有触发器,或者具有除
SELECTon 之外的某些权限.
这意味着,您只能看到具有适当权限的触发器.
要查看表的所有触发器,请查看系统目录pg_trigger
SELECT tgname
FROM pg_trigger
WHERE tgrelid = 'myschema.mytbl'::regclass; -- optionally schema-qualified
Run Code Online (Sandbox Code Playgroud)
适用于表和视图.
或者您可以使用像pgAdmin这样的GUI来显示对象浏览器中表节点下的列表.
在psql命令行工具上,您也可以使用\dS <table_name>(来自https://serverfault.com/questions/331024/how-can-i-show-the-content-of-a-trigger-with-psql)