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_triggerUPDATE tablename SET user_tsv = ... WHERE new_column IS NOT NULLtsvector更新トリガーのソースを調べて、割り当てで使用する適切な式を見つけます。

于 2012-11-25T01:06:12.240 に答える