我刚刚发现,如果没有行受到影响,语句触发器也会执行。 有趣 - 但无论如何 - 有没有办法让行不受到影响,或者至少有任何行受到影响?
触发器在insert语句之后。
您可以使用以下内容:
SELECT count(*)
FROM mytable
WHERE xmin::text::bigint = txid_current();
这将计算在与触发器相同的事务中创建或更新的所有行。当然,如果同一个事务中对同一个表进行多次修改,则不会返回期望的结果。
您甚至可以创建索引来加速查询:
CREATE INDEX ON mytable ((xmin::text::bigint));