DB2的条件唯一约束

时间:2011-12-28 19:34:15

标签: db2

正如你们许多人所知,在DB2中你可以说

   ALTER TABLE EMPLOYEE
  ADD CONSTRAINT NEWID UNIQUE(EMPNO,HIREDATE)

你能说点什么吗

   ALTER TABLE EMPLOYEE
  ADD CONSTRAINT NEWID UNIQUE(EMPNO,HIREDATE,ACTIVE = 'Y')

如果行处于活动状态,我只关心约束。我看起来你可以在MSSQL中做到这一点但不是DB2 ...... Err,抱怨道。

2 个答案:

答案 0 :(得分:1)

对于OP来说可能为时已晚,但我遇到了类似的问题并在此处找到了解决方案:Emulating partial indexes in DB2

在列empno上创建唯一索引的代码可能如下所示:

CREATE UNIQUE INDEX my_index ON employee (CASE WHEN active = 'Y' THEN empno ELSE NULL END) EXCLUDE NULL KEYS;

并且相应地对于empnohiredate列:

CREATE UNIQUE INDEX my_index ON employee (CASE WHEN active = 'Y' THEN empno ELSE NULL END, CASE WHEN active = 'Y' THEN hiredate ELSE NULL END) EXCLUDE NULL KEYS;

答案 1 :(得分:0)

与其他几个DBMS不同,DB2不支持部分索引。

所以我认为你不能在DB2中实现它