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

提前致谢

大卫

4

1 回答 1

5

您不需要删除列或索引,只需删除并重新创建触发器并更新任何更改的字段。

使用常规DROP TRIGGER语句删除触发器,然后使用新列重新创建它tsvector_update_trigger,所有这些都在同一个事务中。UPDATE tablename SET user_tsv = ... WHERE new_column IS NOT NULL如果您已经添加了列,现在更新列。检查 tsvector 更新触发器的源以找出要在赋值中使用的适当表达式。

于 2012-11-25T01:06:12.240 回答