所以我遇到了这个问题,我的表的外键没有正确引用前一个表。我正在为 IBM i 使用 DB2 进行编码(使用使用 COLLECTIONS 而不是 SCHEMA 的旧语言——它是我大学课程的一部分)
确切的错误信息是:
SQL 状态:42890 供应商代码:-573 消息:[SQL0573] UMALIK5 中的表 EMPLOYEE 没有匹配的父键。原因 。. . . . : 在 UMALIK5 中的约束 CAMPUS_FK 的 FOREIGN KEY 子句中指定了引用列列表。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 表没有。
我究竟做错了什么?
感谢您的帮助。