Function 如何在标准sql中重写此pgplsql函数?

Function 如何在标准sql中重写此pgplsql函数?,function,postgresql,full-text-search,heroku,plpgsql,Function,Postgresql,Full Text Search,Heroku,Plpgsql,我正在使用Heroku开发一个应用程序,但他们没有为Postgres加载plpgsql语言,这在尝试运行以下程序时导致了问题: CREATE FUNCTION profiles_search_trigger() RETURNS trigger AS $$ begin new.search_vector := setweight(to_tsvector('pg_catalog.english', coalesce(new.display_name,'')), 'A') ||

我正在使用Heroku开发一个应用程序,但他们没有为Postgres加载plpgsql语言,这在尝试运行以下程序时导致了问题:

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重写此内容?

来自:

目前无法用普通SQL函数语言编写触发器函数


啊,我错过了。谢谢我在文档中没有看到任何引用显示不使用触发器函数的触发器,因此我猜我将不得不求助于处理所有列equally@Kevin:您可以在表达式上创建索引,而无需具体化它,您必须在查询中逐字重新键入表达式:
CREATE INDEX ix_profiles\u使用GIST((setweight(…)| | | | setweight(…))搜索配置文件。