我有一种情况,我需要获取mysql表中当前分支的行数(在该表中,我们是store分支),并将具有其他详细信息的行数插入同一表中。但是问题是当两个或多个并发用户尝试同时从同一分支插入时,所有用户的计数都是相同的,但是对我来说,在我读取计数之前,插入不应为其他用户所用并插入一个用户请求。锁定有什么办法可以做到这一点,任何示例都将有所帮助(我需要在MySql存储过程中完成所有操作)
编辑:对不起,我不能分享工作代码,但是我可以在这里写例子
我的表结构在这里
id name branchid count
1 abc 1 1
2 xyz 1 2
3 abcd 2 1
4 wxyz 2 2
这里是从上表中获取给定分支(ex:1)的行数,并使用计算出的行数插入行
Ex:
set @count = (select count(id) from tbl where branchid = 1);
以后
insert into tbl(id, name, branchid, count)
values(5, 'abcd', 1, @count)
如果仅一个用户从一个分支访问此帐户,但是如果同一分支中有多个用户,请尝试在同一时间访问此
,则此方法很好@count
正在为分支机构用户复制。
答案 0 :(得分:1)
为什么不只在一个查询中这样做呢?
insert into tbl(id, name, branchid, count)
select 5, 'abcd', 1, count(*)
from from tbl
where branchid = 1;