大家好,请问 Oracle 中,如何修改外键约束,我用 modify 命令以下脚本修改时出错:
alter table employee
    modify constraint emp_dep foreign key(dep_id)
    references department(dep_id)
    on delete cascade;是不是要先 drop 外键约束,再重新 add,不能直接修改外键约束的吗?还有,外键约束就只能关联 delete 的吗?不能关联 update 吗?我用以下代码是也出错:
alter table employee
    add constraint emp_dep foreign key(dep_id)
    references department(dep_id)
    on update cascade;----
待复,感谢!

解决方案 »

  1.   

    不能....这种逻辑不合理..怎么UPDATE?难道UPDATE外键ID?
      

  2.   

    employee表中的dep_id在department中要都存在,否则会报错。
      

  3.   

    两个表都存在 dep_id的,怎么修改外键约束呢?
    下面的代码不行:
    alter table employee
      modify constraint emp_dep foreign key(dep_id)
      references department(dep_id)
      on delete cascade;谢谢!
      

  4.   

    on delete 后面可接cascade 或者set null
    on delete cascade表示级联删除,删除记录的时候同时将关联的内容去掉
    on delete set null 表示设置为空,删除记录是对关联的内容不做处理,
    至于要修改的外键关联,是要重新关联到另外一张表的新的字段,可以先删除外键关联再重新建立新的外键关联。
      

  5.   

    至于你说的on update 不知道什么意思,没见过
      

  6.   

    http://topic.csdn.net/u/20100122/08/44963448-484b-4230-bf6f-387941e445e4.html
    这有on update解释的,我还没用过这个
      

  7.   

    那为什么用
    alter table employee
      add constraint emp_dep foreign key(dep_id)
      references department(dep_id)
      on update cascade;这里用 on update cascade 会出错呢?还有,修改外键约束就只能删除再重新建立吗?
      

  8.   

    好像不支持 update cascade 吧?