我正在尝试更改表以在表中添加一个主键和一个外键。但是,当我运行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以查找约束详细信息。
请帮我找出查询出错的问题。
答案 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)
您确定不会意外地两次运行查询吗?