Java MySql统计行数并插入到统计的表中

Java MySql统计行数并插入到统计的表中,java,mysql,jdbc,spring-jdbc,jdbctemplate,Java,Mysql,Jdbc,Spring Jdbc,Jdbctemplate,我有一个场景,需要计算mysql表中当前分支的行数(在该表中,我们是存储分支),并将包含其他详细信息的行数插入同一个表中。但问题是,当两个或多个并发用户试图同时从同一分支插入时,所有用户的计数都是相同的,但对我来说,在我读取计数并插入一个用户请求之前,其他用户的插入不应该发生。是否有任何方法可以锁定此项,并且任何示例都会有所帮助(我只需要在MySql存储过程中执行此操作) 编辑:对不起,我不能分享工作代码,但我可以在这里写例子 我的桌子结构在这里 id name branchid

我有一个场景,需要计算mysql表中当前分支的行数(在该表中,我们是存储分支),并将包含其他详细信息的行数插入同一个表中。但问题是,当两个或多个并发用户试图同时从同一分支插入时,所有用户的计数都是相同的,但对我来说,在我读取计数并插入一个用户请求之前,其他用户的插入不应该发生。是否有任何方法可以锁定此项,并且任何示例都会有所帮助(我只需要在MySql存储过程中执行此操作)

编辑:对不起,我不能分享工作代码,但我可以在这里写例子

我的桌子结构在这里

id    name    branchid    count
1     abc     1           1
2     xyz     1           2
3     abcd    2           1
4     wxyz    2           2
这里我从上表中为给定的分支(ex:1)计算行数,并插入具有该计算计数的行

例:

后来

如果只有一个用户从一个分支访问此功能,但如果来自同一分支的多个用户尝试在同一时间访问此功能,则此功能非常有效

@count 

正在为分支用户进行复制。

为什么不在一个查询中执行此操作:

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

请提供一份报告。我们不能在黑暗中工作。@KIKOSoftware编辑了我的问题您可以在存储计数之前锁定读取的表格。这样,任何第二个用户,想要做同样的计算,必须等待第一个用户完成。我可以这样做吗?因为在锁定表进行读取时,它是否允许我写入并在写入后释放锁?是的,您可以锁定一个表,甚至多个表。但一定要检查数据库引擎是否支持它。例如,InnoDB就是这样。附言:我假设你从一张桌子上读东西,然后写信给另一张桌子。谢谢你会尝试一下的
@count 
insert into tbl(id, name, branchid, count)
select 5, 'abcd', 1, count(*)
from from tbl 
where branchid = 1;