Oracle索引也可以这么建
需求是status为new的id需要唯一,其他的数据不做要求。 drop table test purge; create table test( id number, status varchar2(10) ); create unique index uind_t_id on test(decode(status,'new',id,null)); insert into test values(1,'new'); commit; insert into test values(2,'new'); commit; insert into test values(1,'old'); commit; insert into test values(2,'old'); commit; insert into test values(1,'new'); * 第 1 行出现错误: ORA-00001: 违反唯一约束条件 (UIND_T_ID) insert into test values(2,'old'); ID STATUS ------- ---------- 1 new 2 new 1 old 2 old 2 old 可能有同学要问为什么status和id建一个联合的唯一索引,这种做法达不到要求,实验一下: truncate table test; 可以看到这个不满足其他的数据不做要求的需求。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |