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 命令,就是表锁
|