Postgresql вкладывает оператор SELECT в вызов функции

В настоящее время я настраиваю полнотекстовый поиск в базе данных Postgresql, как описано на этой странице руководства: http://www.postgresql.org/docs/9.0/static/textsearch-tables.html

В настоящее время я выступил с этим заявлением:

CREATE FUNCTION fts_update() RETURNS trigger AS $$
begin
  new.tsv :=
       to_tsvector('pg_catalog.english', coalesce(new.title,'')) ||
       to_tsvector('pg_catalog.english', coalesce(new.description,'')) ||
       to_tsvector('pg_catalog.english',
        SELECT array_to_string(array_accum(name), ' ') FROM agencies where id = new.agency_id
       );
  return new;
end
$$ LANGUAGE plpgsql;
CREATE TRIGGER ftsupdate_trigger BEFORE INSERT OR UPDATE ON camps FOR EACH ROW EXECUTE PROCEDURE fts_update()"

Здесь мне нужно добавить некоторые поля из другой таблицы в индекс, но Postgresql не позволяет мне:

PG::Error: ERROR:  syntax error at or near "SELECT"
LINE 9:         SELECT array_to_string(array_accum(name), ' ') FROM ...

Есть ли хорошее решение для этого?


person Dfr    schedule 29.11.2012    source источник


Ответы (1)


Я думаю, все, что вам нужно сделать, это заключить выбор в скобки, например.

 select to_tsvector('english',(select array_to_string(array['one','two','three'],' ')));
person Gavin    schedule 29.11.2012