SQL:当列为特定值时的唯一约束
发布时间:2020-12-12 16:52:36 所属栏目:MsSql教程 来源:网络整理
导读:CREATE TABLE foo ( dt AS DATE NOT NULL,type AS TEXT NOT NULL,CONSTRAINT unique_dt_type UNIQUE(dt,type) -- check constraint(?)) 当只有一个特定的条件存在时,尝试思考正确的语法来创建一个唯一的约束时,有一个脑袋. 给定,类型可以具有值A-F,每个日期
CREATE TABLE foo ( dt AS DATE NOT NULL,type AS TEXT NOT NULL,CONSTRAINT unique_dt_type UNIQUE(dt,type) -- check constraint(?) ) 当只有一个特定的条件存在时,尝试思考正确的语法来创建一个唯一的约束时,有一个脑袋. 给定,类型可以具有值A-F,每个日期只能有一个A,但可以有多个B-F.好表示例: 2010-01-02 | 'A' -- only one 2010-01-02 | 'B' -- can have multiple 2010-01-02 | 'B' 2010-01-02 | 'B' 2010-01-02 | 'C' -- can have multiple 2013-01-02 | 'A' -- only one 2010-01-02 | 'B' -- can have multiple 2010-01-02 | 'B' 2013-01-02 | 'F' -- can have multiple 2013-01-02 | 'F' 尝试阅读检查/唯一的语法,但没有任何例子. CHECK接近,但仅限于一个范围,并未与UNIQUE情景一起使用.也尝试搜索,但是我的搜索技能要么不符合标准,要么没有任何类似的问题. 解决方法PostgreSQL可以通过它的“部分索引”功能来满足您的需求.实际上,这是通过在创建索引语句中添加一个where子句来实现的.样品: CREATE INDEX my_partial_ix ON my_sample_table (my_sample_field) WHERE NOT (my_sample_field = 'duplicates ok'); 看看这里: 请特别注意示例11-3.建立部分独特指数.它给出了一个与您明确目标一致的例子. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |