“如何解决错误”;“引用约束阻止删除”;在DB2中?

“如何解决错误”;“引用约束阻止删除”;在DB2中?,db2,Db2,所以我的问题是,我的任务是由我们要做的教授提供给我们的 创建表 在每个表中插入记录 从每个表中更新和删除(至少1条记录) 使用遵循旧标准(创建集合而不是模式)的DB2脚本 步骤1和2已完成。更新完成了。我的删除让我很难过。这就是一个例子 CREATE TABLE UMALIK8.CAMPUS ( CAMPUS_ID VARCHAR (10) NOT NULL, CAMPUS_NAME VARCHAR (30) NOT NULL, MANAGER_NUM VARCHAR (10) NOT NULL

所以我的问题是,我的任务是由我们要做的教授提供给我们的

  • 创建表
  • 在每个表中插入记录
  • 从每个表中更新和删除(至少1条记录)
  • 使用遵循旧标准(创建集合而不是模式)的DB2脚本

    步骤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表……在整个删除脚本中,我都遇到了引用错误,我不知道为什么。即使在我的成人表中,但我的成人表没有外键,它只有一个主键,还有一堆子表

    现在我的脚本的顺序是

    桌子, 插入, 更新, 删除 在一个长长的脚本中彼此分开

    你知道怎么解决这个问题吗?我做错了什么


    非常感谢您的帮助,谢谢

    正如OP评论中所讨论的,问题是关于表
    CAMPUS
    上的触发器。正如OP所问,我把这作为一个答案


    此表UMALIK8.CAMPUS上是否可能存在一个触发器,该触发器正在将注册表插入到具有FK的表中


    我对触发器的意思是,如果您的表在插入后有一个触发器,这意味着类似这样的事情:您在
    CAMPUS
    上运行insert命令,插入发生后,
    DB2
    将调用触发器并在一个文件室中插入(我认为这是给定FK名称的其他表的名称)一个注册表将(通过FK)链接到您刚刚插入的
    校园
    ,如果您尝试删除
    校园
    上的注册表,则引用约束
    roomassign\u FK
    将发生,因为您有一个子注册表链接到
    校园中的注册表

    此表中是否可能存在
    UMALIK8。校园
    一个触发器,该触发器将注册表插入到一个具有FK的表中?我不太明白您的意思。我在校园表中有4个插入项,我正在尝试删除包含King的记录,其他插入项没有相同的校园ID,其他插入项会干扰吗?我应该把我的整个剧本都发出去吗?@JorgeCampos我想我已经明白了,我的delete函数的顺序似乎在干扰并导致脚本错误——这似乎是因为一些表对多个表是FK的,我需要以不同的顺序删除——至少看起来是这样的。我对触发器的意思是,如果表在插入触发器之后有一个
    ,这意味着这是:在校园内运行insert命令,在insert发生后,DB2将调用触发器并在一个房间(我认为这是另一个表的名称)中插入一个注册表,该注册表将(通过fk)链接到您刚才在校园内插入的注册表,然后如果您尝试删除校园内的注册表,则使用
    引用约束“roomassign\u fk”
    将发生,因为您有一个链接到校园中的子注册表。希望你现在能理解。很高兴你已经解决了这个问题。如果你把整个脚本都贴出来,你会更容易发现问题并向你详细解释。