2009-11-12 95 views
0

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

ALTER TABLE信息添加约束PK主键(ID_NUMBER)添加约束FK外键(REV_NUMBER)引用REVIEW_INFO

这给下面的结果集:

CONSTNAME TYPE COLNAME


FK˚FREV_NUMBER
PK P REV_NUMBER
FK˚FID_NUMBER
PK P ID_NUMBER

我正在SYSCAT.TABCONST找到约束的细节。

请帮我解决查询出错的问题。

+1

为什么标记为“jquery”? – 2009-11-12 09:04:45

回答

0

你确定你不是不小心运行了两次查询吗?

1

您的ALTER TABLE语句将2行添加到SYSCAT.TABCONST。其他两个约束存在于数据库中的其他表上,并且在执行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以获取列名称。