我的googling-fu让我失望了.如何知道PostgreSQL触发器是否被禁用?
这是我使用postresql的第一天,但我认为你可以通过pg_trigger系统表检查触发状态:http://www.postgresql.org/docs/current/static/catalog-pg-trigger.html
您需要的列是tgrelid
和tgenabled
.
下面的SQL将完成这项工作.它显示当前数据库中的所有触发器.
SELECT pg_namespace.nspname, pg_class.relname, pg_trigger.* FROM pg_trigger JOIN pg_class ON pg_trigger.tgrelid = pg_class.oid JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace
如果tgenabled为'D',则触发器被禁用.所有其他值(此处记录)表明它以某种方式启用.
BTW.如果要检查特定表的触发器,则查询会更短:
SELECT * FROM pg_trigger WHERE tgrelid = 'your_schema.your_table'::regclass
该投给regclass的类型让你从限定的表名到OID(对象ID)的简单方法.