
UPDATE ab set pta = x , version = version + 1 where id = x and 100 = ( select sum(pta) from abf where abf.ab_id = x ) 不知道 上面的 SQL 是否可行? read commited
后面的 abf 是否会被锁表?或者该怎么查看这句 SQL 的或者给点关键字 也行
1 Aruforce OP 求救 dalao |
2 wangyanrui 2020-10-23 19:48:43 +08:00 via Android 猜测不会,蹲个大佬 另:执行前上个锁呗 |
3 dbolo123 2020-10-23 22:11:51 +08:00 你想问 select for update ? |
4 Aruforce OP @dbolo123 不是 select for update 只能锁定已存在的数据 并不能防止新增…我是想避免另一张表被更新… |
5 Leigg 2020-10-24 10:51:26 +08:00 via Android 一条 SQL 是原子执行,你提的问题暴露你对 mysql 的生疏程度 |
6 juzi214032 2020-10-24 21:08:38 +08:00 你可以直接对另一张表加锁,lock tables |
8 Aruforce OP @juzi214032 试过 lock inshare model ,在 RC 并不能避免插入操作。。在 RR 倒是可以。。。 |
9 juzi214032 2020-10-25 23:36:23 +08:00 @Aruforce 不是 lock inshare model,lock inshare model 是行级锁,不是表锁,当然不能避免插入操作。用 LOCK TABLES 命令,就是表锁 |