DB2 - 对多列

时间:2016-07-28 22:22:28

标签: db2

我试图在DB2-- docType列和title列的2列上添加唯一约束。每列的值可以重复。但是,(docTypetitle)对的值不应重复。

到目前为止我试过了

ALTER TABLE externalfiles
ADD CONSTRAINT logicalKey UNIQUE (doctype, title)

alter table externalfiles add unique (doctype, title)

,并且两者都出现以下错误:

  

原因代码不允许操作" 7"在表格" PIT.EXTERNALFILES" .. SQLCODE = -668,SQLSTATE = 57016,DRIVER = 4.21.29

这不允许吗?

DB2 Unique Constraint over multiple Columns建议创建索引作为替代。 Haven尚未尝试将它们编入索引 - 但是,我想知道为什么独特的约束不起作用。

TIA。

2 个答案:

答案 0 :(得分:0)

web search on db2 luw sqlstate 57016返回一些链接,表明先前的ALTER可能要求在ADD约束生效之前执行REORG。

最值得注意的可能是以下文档链接和描述RC7的文本片段[显然是SQLERRMC = 7]:

DB2 for Linux UNIX and Windows 9.7.0 ->Database fundamentals ->Messages ->SQL Messages ->SQL0500 - SQL0999 ->SQL0668N

  

...   7•表处于重组暂挂状态。这可能发生在   包含REORG建议操作的ALTER TABLE语句。   ...

答案 1 :(得分:0)

首先尝试通过以下方式重组表

call sysproc.admin_cmd ('reorg table <TABLE_NAME>');

再试一次以创建唯一索引。应该可以。