相关疑难解决方法(0)

MySQL Query是否包含子查询原子?

有两个表:

表1唯一会话

ID    Count 
Run Code Online (Sandbox Code Playgroud)

表2(会议)

ID    Name
Run Code Online (Sandbox Code Playgroud)

我想更新count只有在name会话中不存在才能计算唯一会话,这是一个例子,所以客观不是通过替代方式来做,但问题是:

Rowsaffected = Update table1 
                   set Count = Count + 1 
               where (Select count(*) from table2 where Name = 'user1' ) = 0;

Insert into table2 (NAME) values('user');
Run Code Online (Sandbox Code Playgroud)

首先查询原子查询?如果是,那就没有问题.

如果不是,那么如果有多个线程运行来执行上述操作怎么办?有可能:

线程1:count返回0,它在线程2启动之前更新了表1但没有更新表2.线程2:它找到计数0,它也将更新计数.

现在对于同一个用户,count是2,这不应该发生.

任何建议/反馈.

mysql

10
推荐指数
1
解决办法
1392
查看次数

标签 统计

mysql ×1