joe*_*k16 1 sql postgresql reserved-words identifier partial-index
我尝试向数据库添加索引,但不断收到错误:
PG::SyntaxError: ERROR: DEFAULT is not allowed in this context
阅读了几个小时的文档后,我似乎无法解决该问题。
我正在运行这个:
"CREATE UNIQUE INDEX index_uniq_service_models_default ON service_models(zone_id) WHERE default"
Run Code Online (Sandbox Code Playgroud)
我的桌子看起来像这样:
create_table :service_models do |t|
t.string :name, null: false
t.jsonb :configuration, null: false, default: "{}"
t.boolean :default, null: false
t.json :metadata, null: false, default: "{}"
t.references :zone, foreign_key: true, null: false, index: { name: idx_name(:service_models, :zones) }
t.timestamps
end
Run Code Online (Sandbox Code Playgroud)
我想要做的是让 ServiceModel 对于一个区域只有 1 个默认值。
一个区域可以有多个 ServiceModel,但只能有 1 个默认 ServiceModel。
"default"要创建仅包含列为的行的部分索引true:
CREATE UNIQUE INDEX index_uniq_service_models_default ON service_models(zone_id)
WHERE "default";
Run Code Online (Sandbox Code Playgroud)
default是保留字,用作标识符时必须用双引号引起来。
更好的是,一开始就不要使用保留字作为标识符。
| 归档时间: |
|
| 查看次数: |
2602 次 |
| 最近记录: |