事务中同时删除一个表,引发死锁

数据库设计中, 表A,表B,表A跟表B通过中间表C来关联,并且表A、表B都表C建立了外键索引关系,并设置了级联删除(on delete cascade)

在一个事务中,先删除了表A,表A删除触发了级联删除表C,接着删除表B,表B删除也触发了级联删除表C,所以在这个事务中同时出现了两个删除表C的请求,所以会产生死锁。

解决方法,表B去掉跟表C的级联删除关系,先删表A,再删表B即可

posted @ 2020-02-27 16:55  delay2015  阅读(607)  评论(0编辑  收藏  举报