【发布时间】:2014-10-14 23:14:00
【问题描述】:
我正在使用 Postgres 9.3。 我刚刚在表中添加了一个触发器。 它是一个插入后触发器,在每条语句之后为每一行执行。 我编写了触发器函数,假设同一个表的索引包含新添加的行。 如果这不是真的,批量插入将显着减慢。 我google了一下,没找到答案。
所以,总结一下我的问题是在语句之后,索引是在 Postgres 9.3 中的“每个语句的插入触发器之后”之前还是之后更新的?
这是我使用的触发器定义:
CREATE TRIGGER trigger_name
AFTER INSERT OR UPDATE
ON table_name
FOR EACH STATEMENT
EXECUTE PROCEDURE trigger_funtion();
【问题讨论】:
-
请告诉我们触发器定义、触发器函数和
create table语句。 -
这是一个难题。这也无关紧要。您的函数不依赖于索引的存在或该索引中的行。
-
我已经添加了触发器定义,但是我没有看到添加表和函数以回答问题的意义。在函数中,我执行了几个查询,其中一个取决于(希望使用)同一张表的索引。
-
我猜@a_horse_with_no_name 害怕无限递归。我也是……
-
函数很重要,因为这是真正的处理。触发器的任何性能问题都将在 function 而不是定义 中可见
标签: postgresql triggers indexing