Database DB2中具有一个可为空列的复合唯一键

Database DB2中具有一个可为空列的复合唯一键,database,db2,Database,Db2,我的表中有两列,我需要使这些列的组合唯一。一列可能包含空值。 复合唯一键在oracle中工作正常,但在DB2中它的给定错误。 任何人都可以帮助了解如何在DB2中实现这种唯一性。下面是一个创建包含两列的唯一索引的模拟示例,其中一列不为null,另一列可为null: create table mytable (a integer not null, b integer , c varchar(128) ); create unique index mytableidx on mytable(a,b

我的表中有两列,我需要使这些列的组合唯一。一列可能包含空值。
复合唯一键在oracle中工作正常,但在DB2中它的给定错误。

任何人都可以帮助了解如何在DB2中实现这种唯一性。

下面是一个创建包含两列的唯一索引的模拟示例,其中一列不为null,另一列可为null:

create table mytable (a integer not null, b integer , c varchar(128) );

create unique index mytableidx on mytable(a,b) ;

显示您的表DDL或minimal示例,以及您的“create unique index”语句,并提及您的Db2版本和运行Db2服务器的操作系统(Z/OS、i-Series、Linux/Unix/Windows)。对可以容纳空值的列的唯一约束不是一个好主意。在Db2中,使用一个
唯一索引
,它不允许FK引用它。正如Oracle所说,“注意:由多列组成的外键可能允许其中一列包含在引用列中没有匹配值的值,为避免这种情况,请在所有外键列上创建NOTNULL约束”