我一直在關注如何爲自動更新創建觸發器的PostgreSQL文檔(http://www.postgresql.org/docs/9.3/static/textsearch-features.html)。我一直在使用的例子如下:爲自動更新創建PostgreSQL觸發器。錯誤:列不是字符類型
CREATE TABLE messages (
title text,
body text,
tsv tsvector
);
CREATE TRIGGER tsvectorupdate BEFORE INSERT OR UPDATE
ON messages FOR EACH ROW EXECUTE PROCEDURE
tsvector_update_trigger(tsv, 'pg_catalog.english', title, body);
而且一切都很好。
當我聲明身柱是象這樣的陣列產生的問題是:
CREATE TABLE messages (
title text,
body text[],
tsv tsvector
);
然後我得到下面的錯誤消息上執行上述觸發命令我已經更新的字段之後:
ERROR: column "body" is not of a character type.
我可以使用下面的命令手動更新表:
UPDATE messages SET tsv = to_tsvector('english', coalesce(title,'') || ' ' || coalesce(body::text,''));
我試圖在觸發命令中使用body::text
將主體列聲明爲數組。但是,這不起作用。
感謝您的幫助。
哪裏是'tsvector_update_trigger'代碼? – Houari 2014-10-20 17:05:01