所以我遇到的问题是由我们教授提供给我们的任务
使用遵循创建COLLECTIONS的旧标准的DB2脚本而不是SCHEMAS
完成了步骤1和2。更新完成。我的删除让我很难过。一个例子就是这个。
CREATE TABLE UMALIK8.CAMPUS (
CAMPUS_ID VARCHAR (10) NOT NULL,
CAMPUS_NAME VARCHAR (30) NOT NULL,
MANAGER_NUM VARCHAR (10) NOT NULL,
CONSTRAINT UMALIK8.CAMPUS_PK PRIMARY KEY (CAMPUS_ID),
CONSTRAINT UMALIK8.CAMPUS_FK FOREIGN KEY (MANAGER_NUM)
REFERENCES UMALIK8.MANAGER(MANAGER_NUM)
ON DELETE CASCADE);
INSERT INTO UMALIK8.CAMPUS (CAMPUS_ID, CAMPUS_NAME, MANAGER_NUM)
VALUES ('King', 'King Campus', 'M021386');
DELETE FROM UMALIK8.CAMPUS
WHERE CAMPUS_ID = 'King';
因此,当我尝试删除它时,它表示通过引用约束“roomassign_fk”阻止删除这对我没有意义,因为roomassign表就像校园表之后的3或4个表,校园是父表,管理器编号来自管理器表,管理器表的父表是Employee表....所有整个删除脚本我得到参考错误,我不知道为什么。即使在我的成人表中,但我的成人表没有外键,它只有自己的主键,它有一堆子表......
现在我的脚本的顺序是
表, 插入, 更新, 删除 所有这些都在一个长脚本中相互分离
任何想法如何解决这个问题?我究竟做错了什么?
非常感谢您的帮助,谢谢!
答案 0 :(得分:2)
正如对OP的评论所讨论的那样,问题是关于表CAMPUS
的触发器。正如OP所说,我把它作为答案。
是否可能在此表UMALIK8.CAMPUS上存在一个触发器,它将注册表插入到具有FK的表中?
我对触发器的意思是,如果你的表有一个插入触发器后会出现类似这样的事情:你在CAMPUS
上运行insert命令,插入发生之后DB2
将调用触发器并插入一个ROOM(我认为这是给定FK名称的其他表的名称)一个注册表将被链接(通过FK)到您刚刚插入{{1}的那个然后,如果您尝试删除CAMPUS
上的注册表,则会发生引用约束CAMPUS
,因为您有一个与"roomassign_fk"