我在PostgreSQL中有一个全文搜索查询,如下所示:
to_tsvector('english', coalesce("products"."name"::text, '')) || to_tsvector('english', coalesce("products"."uid"::text, '')) || to_tsvector('english', coalesce("products"."serial"::text, ''));
但是,创建这样的迁移由于某种原因不起作用:
create_trigger(compatibility: 1).on(:products).before(:insert, :update) do
"new.tsv_body := to_tsvector('english', coalesce("products"."name"::text, '')) || to_tsvector('english', coalesce("products"."uid"::text, '')) || to_tsvector('english', coalesce("products"."serial"::text, ''));"
end
有什么建议吗?
答案 0 :(得分:1)
提示是Stack Overflow如何通过语法突出显示您的程序文本:
"new.tsv_body := to_tsvector('english', coalesce("products"."name"::text, '')) .... )
^^^^^^^^^^ ^^^^^^
您在表格和列名称周围添加了双引号。整个字符串是双引号。所以这些插入双引号结束字符串。
你需要逃避它们,或者省略它们。我不做Ruby / Rails,但如果它像大多数语言一样,反斜杠转义是合适的:
"new.tsv_body := to_tsvector('english', coalesce(\"products\".\"name\"::text, '')) .... )