如何在PostgreSQL 9中禁用触发器?

And*_*dré 8 postgresql triggers

在PostgreSQl 8.x中禁用触发器我做了类似的事情:

ALTER TABLE table DISABLE TRIGGER ALL;
Run Code Online (Sandbox Code Playgroud)

当我在PostgreSQL 9中执行此操作时,我得到以下内容:

my_database=> ALTER TABLE my_table DISABLE TRIGGER ALL;
ERROR:  permission denied: "RI_ConstraintTrigger_25366" is a system trigger
Run Code Online (Sandbox Code Playgroud)

PS:此表由运行此命令的用户创建.

这有什么线索吗?

Tom*_*omH 14

某些触发器会自动添加以强制执行约束,除非您是超级用户,否则无法禁用这些触发器.如果您只想禁用已添加的常规触发器,请执行以下操作:

ALTER TABLE table DISABLE TRIGGER USER;
Run Code Online (Sandbox Code Playgroud)

  • 好吧,它不会禁用约束触发器否,因为那时你的约束将不会被强制执行.如果要禁用它们,则必须是超级用户. (6认同)