簡體   English   中英

當外鍵引用父表時,為什么父表沒有匹配的主鍵或唯一鍵?

[英]Why does a Parent table not have a matching Primary or Unique key, when a foreign key is referenced to the parent table?

所以我遇到這個問題,我的表的外鍵沒有正確引用上一個表。 我正在使用DB2 for IBM i進行編碼(使用使用COLLECTIONS的舊語言而不是SCHEMA ----它是我學院課程的一部分)

確切的錯誤消息是:

SQL狀態:42890供應商代碼:-573消息:[SQL0573] UMALIK5中的表EMPLOYEE沒有匹配的父鍵。 原因。 :在FOREIGN KEY子句中為UMALIK5中的約束CAMPUS_FK指定了引用列列表。 UMALIK5中的父表EMPLOYEE沒有匹配的PRIMARY或UNIQUE鍵。 如果文件已分區,則必須對父文件的訪問路徑進行非分區。 無法添加約束。 恢復。 :執行以下操作之一並再次嘗試請求: - 在FOREIGN KEY子句中指定一個表,該表具有與引用列列表匹配的PRIMARY或UNIQUE鍵。 - 更改引用列列表以匹配父表上定義的PRIMARY或UNIQUE鍵的定義。 - 如果父文件已分區,請添加未分區的訪問路徑。 處理已結束,因為突出顯示的語句未成功完成

我在IBM的支持頁面上查找的錯誤更令人困惑。

這是我的代碼:

CREATE TABLE UMALIK5.POSITION (
POSNCODE VARCHAR (10) CONSTRAINT UMALIK5.POSITION_PK PRIMARY KEY,
POSNDESC VARCHAR (50));

SELECT * FROM UMALIK5.SYSTABLES;
SELECT * FROM UMALIK5.SYSCOLUMNS
 WHERE TABLE_NAME = 'EMPLOYEE';
CREATE TABLE UMALIK5.EMPLOYEE (
EMP_NUM VARCHAR (10) CONSTRAINT UMALIK5.EMPLOYEE_PK PRIMARY KEY,
EMP_F_NAME VARCHAR (50),
EMP_L_NAME VARCHAR (50),
MANAGER_NUM VARCHAR (10),
SUPERVISOR_CODE VARCHAR (10),
PAYRATE VARCHAR (20),
POSNCODE VARCHAR (10),
HIREDATE VARCHAR (50),
CONSTRAINT UMALIK5.EMPLOYEE_FK FOREIGN KEY (POSNCODE)
REFERENCES UMALIK5.POSITION(POSNCODE));

CREATE TABLE UMALIK5.CAMPUS (
CAMPUS_ID VARCHAR (10) CONSTRAINT UMALIK5.CAMPUS_PK PRIMARY KEY,
CAMPUS_NAME VARCHAR (30),
MANAGER_NUM VARCHAR (10),
CONSTRAINT UMALIK5.CAMPUS_FK FOREIGN KEY (MANAGER_NUM)
REFERENCES UMALIK5.EMPLOYEE(MANAGER_NUM));

我不知道我需要做什么,當我運行DB2腳本時,Employee表創建的表很好,但由於某種原因,CAMPUS表沒有。

我究竟做錯了什么?

謝謝您的幫助。

從字面上理解錯誤消息。 為了擁有外鍵,您必須在父表中引用一些將返回一個記錄的內容。 您正在嘗試引用manager_num,它不僅不唯一,而且實際上可能為null。 這就是db2對你咆哮的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM