snrg.net
当前位置:首页 >> JAVA hiBErnAtE中删除表遇到主键被外键引用,违反完整约束条件,不能删除的问题 2张表,一... >>

JAVA hiBErnAtE中删除表遇到主键被外键引用,违反完整约束条件,不能删除的问题 2张表,一...

2个办法咯:1、info表外键那里设置cascade delete级联删除,可能会比较慢.2、删除info表delete from info where id=..再删除user表.PS:不要用hibernate那个啦,多写写SQL多学学SQL,hibernate有啥用?想偷懒用代码生成器得了.

被外键引用的话需要先删除外键那条记录,再删除本条记录. 否则你永远也删不了.或者你把数据库表的外键约束删除了,估计你们经理不会让你这么做的~~不进catch 是因为你上面的代码没有异常抛出吧 看看异常是否被你的DAO类吞了.

要按顺序来:先删除外键,再删除主键 另外,给外键都加上级联 在外键后面加一句话: on update cascade on delete cascade

oracle 有功能把所有主外键都去掉,这时候你随便删除删除完在加上就ok拉这个简单吧

你这个异常报的是违反约束条件.一般来讲是由于外键的关系导致的.你看一下是不是你在做跟新或者删除的时候,有子表的数据没有删除或者修改.然后导致的主表的记录无法删除或者修改.在做修改或者删除的时候,一定要先删除或者修改子表的数据才行.如果是修改的话,你也可以在数据库中建一个触发器来自动关联子表的操作.这样你就能只修改主表的数据,然后子表自己跟着修改了.

如果删除时报主键约束极可能是其他表的外键约束中引用了该主键,即其他表和该表有主子关系,检查一下其他表的外键,删除时先删子表的相关数据再删主表

权限表 cascade="save-update" 主控端直接删除,被控端对应的及连对象的信息就没了.hibernate会自动删除外键的.如果还是有问题就在权限表的DAO的DELETE方法中先遍历这个权限的所有用户,然后把这些用户权限设空,然后再调用hibernate的delelte方法.这个本来是被控方才要使用的方法,如果前面不行就试试这个.

如果有ID的话,就先用session.get(id)取PO对象,然后用session.delete()删除.

最笨的办法是,先把B和C表中的相关联的数据删除后,再删除A表中的数据 如果想做到同时删除,需要写一个存储过程.

删除约束之后,强关联就变成了弱关联.很容易出现数据异常.

相关文档
bnds.net | nwlf.net | zxqk.net | 5213.net | xyjl.net | 网站首页 | 网站地图
All rights reserved Powered by www.snrg.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com