我有一个父表和几个子表,其中FK指向父表。我从父表中删除了一条记录,我注意到这会触发所有子表上的删除触发器,即使我要删除的父记录在这些子表中没有子记录。
我觉得这很奇怪。但是我来自SQL Server,因此Postgres中的行为可能有所不同。
如果重要的话,我的触发器是语句级触发器。
有人可以解释一下,给我指出一些参考文献吗?
我现在没有任何代码可以发表...但是我认为这种情况对于一些对Postgres有更多经验的人来说是显而易见的。
答案 0 :(得分:2)
无论受影响的记录数如何,都会触发语句级别触发器。因此,即使不存在任何子记录,也会执行自动删除语句(假设FK为on delete cascade
),从而触发触发器。