更新tsvector更新触发器

4
我有一个针对表中的tsvector列'user_tsv'的tsvector更新触发器,这使我能够执行全文搜索。
CREATE TRIGGER tsvector_user_update BEFORE INSERT OR UPDATE ON users
FOR EACH ROW EXECUTE PROCEDURE 
tsvector_update_trigger(user_tsv, 'pg_catalog.english', firstname, surname, email);
CREATE INDEX user_index_tsv ON users USING gin(user_tsv);

我已经向表中添加了另一列,我想在这个触发器中包含它,有没有办法更新触发器(以及tsvector列),或者我需要删除列/触发器并重新添加它们?

PostgreSQL 9.0

谢谢

David


您只能重命名或启用/禁用触发器。 - Damyan Bogoev
1个回答

5
您不需要删除列或索引,只需删除并重新创建触发器,并更新任何更改过的字段。
使用常规的DROP TRIGGER语句删除触发器,然后在同一事务中使用新列使用tsvector_update_trigger重新创建它。如果您已经添加了列,请使用 UPDATE tablename SET user_tsv = ... WHERE new_column IS NOT NULL 来更新列。检查tsvector更新触发器的源代码以找到要在赋值中使用的适当表达式。

谢谢Craig,这个方法很有效,虽然我不需要手动更新tsv列,一个虚拟的更新语句自动完成了。 - DaveB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接