【发布时间】:2020-10-08 17:54:04
【问题描述】:
在一个 postgres 数据库中,假设我有 3 个表,tb1、tb2 和 tb3。
tb2 在 tb1 上使用触发器 T1 为每一行插入后更新,tb3 在之后更新使用触发器 T2 为每个语句插入 tb1。
我的情况是在 tb1 和 tb2 完成更新之前我不希望 tb3 得到更新,因为她同时使用两者。
现在,如果我在 tb1 中插入最后一行之后执行在 tb1 上插入 10k 行的查询,则语句将结束。并且触发器 T2 将触发。我的问题是,T2 会在 tb2 到达最后 10k 行之前还是之后触发?
如果之前,您能否提出一个解决方案,使 tb3 直到两个表都完成所有插入后才更新?
【问题讨论】:
-
这听起来很像 XY 问题。
-
是的,也许你是对的,但我也解释了情况,所以如果你有完全不同的解决方案,请分享。
-
您能否添加一个实际示例来说明您要实现的目标? FOR EACH 会让人怀疑您在做事而不是在 RDBMS 中做事。
-
该语句直到插入最后一行后才完成,因此
FOR STATMENT直到那时才会触发。设置测试和验证。
标签: postgresql triggers plpgsql