2009-11-12 104 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以獲取列名稱。

相關問題