达梦数据库的组合索引唯一约束不同于pg和MySQL,对于NULL值得处理无法添加,对于值(1,NULL)(1,NULL)插入会报违反唯一约束。
示例如下:
create table test_uq(id int ,t1 int);
create unique index id_idx on test_uq1(id);
insert into test_uq values(1,null);
insert into test_uq values(1,null); -----6602: 违反表[TEST_UQ]唯一性约束
通过建立条件表达式组合索引
create unique index id_t1_uq on test_uq(case when t1 is null then null else cast(id as varchar)||','|| cast(t1 as varchar) end) --非聚集型唯一函数索引
insert into test_uq values(1,null);
insert into test_uq values(1,null);
缺点:该方式虽然满足了需求,但是无法走索引查询数据。