我们有一个昂贵的AFTER UPDATE...FOR EACH STATEMENT
触发器函数,用于填充tsvector
列进行搜索。
有一个列的子集是可搜索的,并且是tsvector
生成的一部分。
既然我们不能在CREATE TRIGGER
中为语句级触发器指定列列表,那么有没有一种方法可以找出针对当前UPDATE
语句更新的列,以便我们仅在其中一个可搜索列更新时重新生成tsvector
?
编辑:UPDATE
语句可以一次性更新1或50K行。
编辑2:似乎是以下问题的重复。我将保持这个打开一段时间,只是在任何新的功能被添加到Postgres后。
https://dba.stackexchange.com/questions/290005/how-to-select-sub-object-with-given-keys-from-jsonb
1条答案
按热度按时间sg3maiej1#
要使用转换表检查PostgreSQL触发器中的特定列是否发生了更改,您可以遍历每对新旧行,并使用
IS DISTINCT FROM
运算符比较相关列的值。下面是一个如何在触发器函数中完成此操作的简化示例:字符串
使用触发器
型