我在DB2(v9.5)中有一个数据库表,如下所示:
CREATE TABLE license(key CHAR(16) FOR BIT DATA NOT NULL PRIMARY KEY,
name VARCHAR(32) not null,
startDate TIMESTAMP not null,
data XML);
(我正在使用UUID作为主键,如this guide所示)
我的问题是防止重复输入。我的重复标准如下:
name
值“Fred”可以
表中不止一次出现key
)不行。即,name
和startDate
以及data
的两行不能具有相同的值。我看到它的方式我有几个选择:
name
和startDate
AND data
)在表格中必须是唯一的答案 0 :(得分:1)
您可以添加唯一约束。只有当列不可为空时,列才能成为DB2中唯一约束的一部分。这里的另一个问题是XML类型的数据列。 XML类型的列不能是唯一约束的一部分。
您可以为列名称和startdate添加唯一约束,如下所示:
CREATE TABLE license(
key CHAR(16) FOR BIT DATA NOT NULL PRIMARY KEY,
name VARCHAR(32) not null,
startDate TIMESTAMP not null,
data XML,
unique(name, startDate)
);
您可以将XML列的一部分添加到唯一约束中。我不能在这里给出一个例子,因为它取决于你的xml数据的具体内容。搜索“生成密钥使用xmlpattern”以获取有关此主题的信息。