2012-11-24 5 views
4

나는이 날 전체 텍스트 검색을 수행 할 수있는 테이블에 tsvector 열 'user_tsv'에 대해 다음과 tsvector 업데이트 트리거, 테이블에 다른 열을 추가하기 때문에 내가 가진업데이트 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 열)를 업데이트 할 수있는 방법이 있습니까? 아니면 열/트리거를 삭제하고 다시 추가해야합니까? 사전

데이비드

당신은, 열 또는 인덱스를 삭제 바로 삭제 및 변경 필드를 트리거를 다시 만들고 업데이트 할 필요가 없습니다
+0

트리거의 이름을 바꾸거나 활성화/비활성화 만 할 수 있습니다. –

답변

4

에서

PostgreSQL은 9.0

감사합니다.

트리거를 일반 DROP TRIGGER 문과 함께 놓은 다음 tsvector_update_trigger을 사용하여 새 열을 사용하여 다시 생성하십시오. 모두 동일한 트랜잭션으로 수행하십시오. 이미 열을 추가 한 경우 이제 UPDATE tablename SET user_tsv = ... WHERE new_column IS NOT NULL 열을 업데이트하십시오. 할당에 사용할 적절한 표현식을 찾으려면 tsvector 업데이트 트리거의 소스를 검사하십시오.

+0

덕분에 Craig는 수동으로 tsv 열을 업데이트 할 필요가 없지만 대충 업데이트 문을 사용하여 자동으로 처리했습니다. – DaveB