加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – 对hstore密钥的唯一索引或约束

发布时间:2020-12-13 16:15:14 所属栏目:百科 来源:网络整理
导读:如果该密钥存在,我想在hstore列中的特定键上创建唯一索引或约束.我希望在另一个问题的某个地方找到答案: Practical limitations of expression indexes in PostgreSQL 但我尝试了我能提出的每个版本的语法,没有任何方法可行. 目前,我的表是 hstore_table hs
如果该密钥存在,我想在hstore列中的特定键上创建唯一索引或约束.我希望在另一个问题的某个地方找到答案:

Practical limitations of expression indexes in PostgreSQL

但我尝试了我能提出的每个版本的语法,没有任何方法可行.

目前,我的表是

hstore_table

hstore字段是hstore_value

当它们存在时,我想要强制独特的是’foo’和’bar’.

我的PostgreSQL版本是8.4.13

如果我已经理解了你正确要求的东西,你需要一个部分独特的功能索引:
CREATE TABLE hstest ( x hstore not null );

CREATE UNIQUE INDEX hstest_key_k1_values_unique 
ON hstest((x -> 'k1'))
WHERE ( x ? 'k1' );

WHERE子句不是严格要求的,因为如果找不到键查找将为null.它是否合适取决于您的查询.

如果你想要多个键,如果你想要两个键是独立的,可以使用两个索引;如果你想链接它们,可以使用索引两个表达式,这样唯一约束允许(1,2)和(1,3)或(2,2)但不是另一个(1,2),像这样:

CREATE UNIQUE INDEX hstest_key_k1k2_values_unique 
ON hstest ((x -> 'k1'),(x -> 'k2'));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读