Postgres: DISABLE TRIGGER ALL and ON UPDATE CASCADE



当我

ALTER TABLE foo DISABLE TRIGGER ALL;
DELETE FROM foo;

删除不会级联到具有的其他表

FOREIGN KEY ("fooId") REFERENCES "foo"("id") ON DELETE CASCADE

限制,但我在文档中找不到任何关于这方面的信息。我也没有看到任何我没有在中创建的触发器

SELECT * FROM information_schema.triggers;

我猜ON UPDATE/ON DELETE是作为触发器在内部实现的(在pgAdmin中不可见(?有人知道这是在哪里记录的吗?

请尝试此处:

DISABLE/ENABLE [ REPLICA | ALWAYS ] TRIGGER
这些表单配置属于表的触发器的触发。禁用的触发器对系统来说仍然是已知的,但在其触发事件发生时不会执行。对于延迟触发器,启用状态在事件发生时检查,而不是在实际执行触发器功能时检查可以禁用或启用由名称指定的单个触发器,或表上的所有触发器,或仅启用用户触发器(此选项不包括内部生成的约束触发器,例如用于实现外键约束或可延迟唯一性和排除约束的触发器(。禁用或启用内部生成的约束触发器需要超级用户权限;应该谨慎行事,因为如果不执行触发器,当然不能保证约束的完整性。

最新更新