DB2的条件唯一约束
很多人都知道,在DB2中,您可以说DB2的条件唯一约束,db2,Db2,很多人都知道,在DB2中,您可以说 ALTER TABLE EMPLOYEE ADD CONSTRAINT NEWID UNIQUE(EMPNO,HIREDATE) 你能说些类似的话吗 ALTER TABLE EMPLOYEE ADD CONSTRAINT NEWID UNIQUE(EMPNO,HIREDATE,ACTIVE = 'Y') 我只关心行处于活动状态时的约束。我看起来你可以在MSSQL中完成这项工作,但不能在DB2中完成。。。唉,发牢骚 与其他几个DBMS不同
ALTER TABLE EMPLOYEE
ADD CONSTRAINT NEWID UNIQUE(EMPNO,HIREDATE)
你能说些类似的话吗
ALTER TABLE EMPLOYEE
ADD CONSTRAINT NEWID UNIQUE(EMPNO,HIREDATE,ACTIVE = 'Y')
我只关心行处于活动状态时的约束。我看起来你可以在MSSQL中完成这项工作,但不能在DB2中完成。。。唉,发牢骚 与其他几个DBMS不同,DB2不支持部分索引
因此,我认为您无法在DB2中实现这一点。对于OP来说可能已经太晚了,但我遇到了类似的问题,并在这里找到了解决方案: 在列
empno
上创建唯一索引的代码如下所示:
CREATE UNIQUE INDEX my_index ON employee (CASE WHEN active = 'Y' THEN empno ELSE NULL END) EXCLUDE NULL KEYS;
相应地,对于empno
和hiredate
两列:
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;
这取决于DB2的版本和/或“风格”。使用6.1及更高版本的DB2fori,您可以
创建唯一的索引x。。。其中搜索条件
,以便具有条件唯一性。