表结构
1 | CREATE TABLE `group_works` ( |
代码逻辑
1 | tran := extension.MySQL.Begin() |
死锁步骤
打开两个 mysql cli
, 分别开启事务:
transation A:
1 | begin; # step 1 |
transation B:
1 | begin; # step 2 |
测试发现当 没有 group
= ‘1111’ 的记录时 去做 DELETE
, 会发生死锁, 如果存在记录,反而不会死锁。
解决方案
在做 DELETE
之前先判断是否有记录,当存在记录的时候才执行 DELETE
1 | tran := extension.MySQL.Begin() |