在批量插入上执行触发器的顺序

时间:2018-12-13 06:24:52

标签: postgresql bulkinsert database-trigger

假设我们要在一个语句中向一张表中插入1000行(从1到1000)。

该表在触发之前和之后都有一个。

这些行的处理顺序是什么?

此刻我想:

  1. 在触发执行第一行之前
  2. 插入第一行
  3. 在第二行触发执行之前
  4. 插入第二行
    ......

然后最后将以不确定的顺序调用after触发器。

我是对的吗?在哪里可以找到我的假设的证据?

1 个答案:

答案 0 :(得分:1)

这取决于您的插入后触发器是行级触发器还是语句级触发器。 每个语句后都会触发一次语句触发器

... FOR EACH STATEMENT EXECUTE PROCEDURE xyz();

如果您要为每个受影响的行执行触发器,这意味着您想要一个行级触发器。

... FOR EACH ROW EXECUTE PROCEDURE xyz();