添加一个主键和一个外键会增加总共四个键

时间:2009-11-12 07:10:03

标签: db2

我正在尝试更改表以在表中添加一个主键和一个外键。但是,当我运行alter table查询时,我总是得到四个值,两个主键和两个外键。以下是我正在运行的查询:

alter table INFO add constraint pk主键(ID_NUMBER)添加约束fk外键(REV_NUMBER)引用REVIEW_INFO

给出结果集如下:

CONSTNAME TYPE COLNAME


FK F REV_NUMBER
PK P REV_NUMBER
FK F ID_NUMBER
PK P ID_NUMBER

我正在运行SYSCAT.TABCONST以查找约束详细信息。

请帮我找出查询出错的问题。

2 个答案:

答案 0 :(得分:1)

您的ALTER TABLE语句向SYSCAT.TABCONST添加了2行。另外两个约束存在于数据库中的其他表上,并且在执行ALTER TABLE语句之前就已存在。如果您在SYSCAT.TABCONST中包含TABNAME列,则可以确定每个约束适用于哪个表。

我们可以根据您的结果推断出一些信息:

CONSTNAME TYPE COLNAME
--------- ---- -------------
FK        F    REV_NUMBER      <-- Created by your ALTER TABLE statement
PK        P    REV_NUMBER      <-- Pre-existing primary key.  Probably on REVIEW_INFO table 
FK        F    ID_NUMBER       <-- Pre-existing foreign key, against unknown table.
PK        P    ID_NUMBER       <-- Created by your ALTER TABLE statement

注意:

这里有些奇怪 - 视图SYSCAT.TABCONST意味着您在DB2 for LUW上运行,但SYSCAT.TABCONST没有(并且从未拥有)名为COLNAME的列。但是,由于您不提供执行的查询来生成结果,因此我假设您正在加入SYSCAT.KEYCOLUSE以获取列名。

答案 1 :(得分:0)

您确定不会意外地两次运行查询吗?