2
我使用Heroku上开发的应用程序,但他们没有加载的Postgres的PLPGSQL语言,这是造成试图运行时,以下问题:我该如何重写标准sql中的这个pgplsql函数?
CREATE FUNCTION profiles_search_trigger() RETURNS trigger AS $$
begin
new.search_vector :=
setweight(to_tsvector('pg_catalog.english', coalesce(new.display_name,'')), 'A') ||
setweight(to_tsvector('pg_catalog.english', coalesce(new.about,'')), 'B') ||
setweight(to_tsvector('pg_catalog.english', coalesce(new.music_education,'')), 'D') ||
setweight(to_tsvector('pg_catalog.english', coalesce(new.other_experience,'')), 'D') ||
setweight(to_tsvector('pg_catalog.english', coalesce(new.favourite_artists,'')), 'D');
return new;
end
$$ LANGUAGE plpgsql;
我怎么能改写这个使用标准的SQL,而比plpgsql?
啊,我错过了。谢谢。我没有看到任何文档中提到的触发器没有使用触发器函数,所以我猜我必须诉诸同等对待所有列 – 2011-03-30 13:16:35
@Kevin:你可以创建一个表达式的索引而不会实现它,但是,你将不得不在查询中重新输入表达式:'CREATE INDEX ix_profiles_search ON配置文件USING GIST((setweight(...)|| ... || setweight(...)))'' – Quassnoi 2011-03-30 13:17:55