Oracle:外键关联导致数据无法删除

系统 1962 0

原地址: http://blog.sina.com.cn/s/blog_5e0ed6fd0100i1z2.html

 

    手动删除数据库中冗余数据可能遇到外键关联导致数据无法删除的问题。这个问题的解决及思考记录如下:

 

   问题的产生是因为在数据库设计的时候,在建立外键关联的时候没有设置级联删除,也就是说在设置外键的时候并没有加上on delete cascade限定。对于这个问题,我的想法是:在数据库设计的时候一般情况下都是应该加上这样的限制的。如果说担心“级联删除”可能会误删有用的数据,这种情况如果真的发生的话,那么就应该在数据库的设计上找原因了。

    如果在数据库设计的时候设置了级联删除,那么本文提到的问题是不会发生的。如果不幸这样的状况发生了,那么可以根据它提示的关联外键,到user_constraints表中按constraint_name查找到唯一的记录,当然查询这个系统视图的用户权限应该比较高,然后在记录中找到table_name,最后编辑表的外键关联,将on delete触发的动作改为cascade。如果数据库中数据库表很多,关联关系比较复杂,那么很可能在遇到问题之后要修改的外键关联时的级联删除不止一个两个。

    此外,说两个题外话:

    第一,设置外键关联的时候,级联操作有三种设置方式:
    默认无动作:on delete no action;
    置空:on delete set null;
    级联删除:on delete cascade。

    第二,在drop表的时候,用drop table cascade constraints语句,只会删除子表与父表之间的关联关系,不会删除子表中关联父表的那些记录。

Oracle:外键关联导致数据无法删除


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论