1. 발생
해당 에러는 Postgresql에서 Full Text Search를 위해 tsvector 컬럼을 업데이트할 때 발생한다.
-- 특정 컬럼을 ts_vector로 변경하여 업데이트
UPDATE
TABLE
SET
tsvec_words = to_tsvector('english',COLUMN);
2. 원인
해당 컬럼 (혹은 다른 컬럼) 에 테이블 row 업데이트/인서트 시 ts_vector를 자동으로 업데이트하는 trigger가 걸려 있기 때문에 업데이트 간 충돌이 생겨 발생한다.
3. 해결
트러거를 삭제 후 데이터 업데이트 후에 트리거를 재설정하면 해결된다.
3-1. 트리거 삭제
drop trigger TABLE_TRGGER on TABLE;
3-2. 트리거 생성
CREATE TRIGGER
TABLE_TRIGGER
BEFORE INSERT OR UPDATE ON
TABLE
FOR EACH ROW EXECUTE PROCEDURE
tsvector_update_trigger(tsvec_words, 'english',COLUMN);
'Postgresql' 카테고리의 다른 글
[PostgreSQL] MVCC (Multi-Version Concurrency Control) (0) | 2023.10.06 |
---|---|
[PostgreSQL] 미사용 인덱스(INDEX) 찾기 및 삭제, 성능향상 (0) | 2023.10.06 |
[PostgreSQL] 문자열내 중복 공백, 단어 제거 (0) | 2023.10.04 |
[PostgreSQL] BRIN 인덱스의 원리 및 특징 (0) | 2023.09.18 |
[PostgreSQL] GIN인덱스의 원리 및 특징 (0) | 2023.09.13 |