MySQL的行计数并插入到该表中

时间:2018-07-28 05:57:48

标签: java mysql jdbc spring-jdbc jdbctemplate

我有一种情况,我需要获取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 

正在为分支机构用户复制。

1 个答案:

答案 0 :(得分:1)

为什么不只在一个查询中这样做呢?

insert into tbl(id, name, branchid, count)
select 5, 'abcd', 1, count(*)
from from tbl 
where branchid = 1;