postgresql - Postgres : syntax error creating index using prgm GIN

标签 postgresql indexing

按照 Postgres trgm docs 中的说明进行操作,我可以使用 GINGiST 创建索引:

home_accounting_dev=# \d+ test_trgm
                     Table "public.test_trgm"
 Column | Type | Modifiers | Storage  | Stats target | Description 
--------+------+-----------+----------+--------------+-------------
 t      | text |           | extended |              | 
Indexes:
    "trgm_idx" gist (t gist_trgm_ops)
    "trgm_idx_2" gin (t gin_trgm_ops)
Has OIDs: no

...但我似乎无法在现有表“支出”、“desc”列中这样做。

home_accounting_dev=# \d+ expenditures
                                                          Table "public.expenditures"
   Column    |            Type             |                         Modifiers                         | Storage  | Stats target | Description 
-------------+-----------------------------+-----------------------------------------------------------+----------+--------------+-------------
 id          | integer                     | not null default nextval('expenditures_id_seq'::regclass) | plain    |              | 
 desc        | text                        |                                                           | extended |              | 
 amount      | character varying(255)      |                                                           | extended |              | 
 inserted_at | timestamp without time zone | not null                                                  | plain    |              | 
 updated_at  | timestamp without time zone | not null                                                  | plain    |              | 
 expent_at   | date                        |                                                           | plain    |              | 
Indexes:
    "expenditures_pkey" PRIMARY KEY, btree (id)
Referenced by:
    TABLE "expenditures_taggings" CONSTRAINT "expenditures_taggings_assoc_id_fkey" FOREIGN KEY (assoc_id) REFERENCES expenditures(id)
Has OIDs: no

该列与表 test_trgm 中的示例“t”列的类型和特征完全相同,但当我尝试创建索引时,它会引发语法错误:

home_accounting_dev=# CREATE INDEX asdf_qwer ON expenditures USING gin (desc gin_trgm_ops);
ERROR:  syntax error at or near "desc"
LINE 1: CREATE INDEX asdf_qwer ON expenditures USING gin (desc gin_t...

如果我错误输入列名称,它会以不同的方式失败:

home_accounting_dev=# CREATE INDEX asdf_qwer ON expenditures USING gin (dec gin_trgm_ops);
ERROR:  column "dec" does not exist

最佳答案

desc 是保留字。将其用双引号括起来,它将起作用:

CREATE INDEX asdf_qwer ON expenditures USING gin ("desc" gin_trgm_ops);

关于postgresql - Postgres : syntax error creating index using prgm GIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37334902/

相关文章:

sql - 创建脚本来删除多个表(PostgreSQL)

sql - 如何从数据库中逐一返回样本行

json - 触发器以在 PostgreSQL 中从 JSON 对象创建记录

python - 如何在乘以 pandas DataFrames 时将 NaN 或非对齐值视为 1 或 0

python - 具有来自另一个数组的索引的 Numpy 索引嵌套数组

python - 如何设置QComboBox的默认项

sql - 为什么 SQL Server 不将索引用于非常相似的日期时间查询?

SQL 为每个用户获取过去 5 天内的所有行,并为该 5 天之前的每个用户获取第一行

python - 在 Django 框架中使用动态模型

curl - 不使用 curl 将数据索引到 ElasticSearch