我正在将数据从一个PostgreSQL v10表复制到另一个。目标表具有几个外键约束。我很惊讶我没有得到任何错误,即使外键约束所引用的表都没有任何数据。

在执行复制之前,我使用DISABLE TRIGGER ALL来确保不会触发在目标表上定义的触发器。我很惊讶复制成功。在ENABLE TRIGGER ALL之后,我尝试再添加一行,即现有行的副本。失败并违反了外键约束。然后,我做了DISABLE TRIGGER ALL,尝试添加新行,并成功完成了。

我得出的结论是,在PostgreSQL 10中,DISABLE TRIGGER ALL将禁用外键约束检查。那是预期的行为吗?

可以在here中找到详细信息。

最佳答案

是的,这是预期的。

"ALTER TABLE":

关于sql - 是否应通过DISABLE TRIGGER ALL禁用外键约束检查?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51775738/

10-15 18:16