连带删除怎么处理?

有两个表A,B,A表:image.pngB表:image.png,B表的dict_id字段为A表的id字段。
如果我要删除A表的一条记录,同时也要删除关联A表的B表的记录,
问题:如果删除A表记录成功,删除B表记录失败,失败情况:1.B表没有关联A表的记录 2.删除B表过程失败,比如sql语句错误。第一种情况最终结果为成功,第二种结果为失败,进行回滚。
以下为有bug代码:当id不存在,没有删除数据时,最后还是返回true,没有返回false
image.png
我应该怎么修改?
方案一:删除A表记录成功后,查询B表是否有关联记录,有进行删除,删除失败则最终结果为失败,抛异常回滚。
此方案是否可行?但每次删除查多一次B表会不会太耗费性能?还有其它的解决方案吗?

阅读 2.8k
3 个回答
✓ 已被采纳

所谓的BUG是指什么呢,是指事务注解没生效吗?
如果是的话,是因为异常被catch了。
最简单的方法,把异常往出抛,在调用处做捕获处理。

异常要抛出去不可以自行抓住吞掉,不然事务无法感知,以为成功就提交了

新手上路,请多包涵

把这两个删除操作放在同一个事务里面就行了吧,异常不要catch了之后不抛出来,用上事务的注解,两个中任意一个操作出错,都会被当做同一个事务回滚的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题