gpt4 book ai didi

mysql - 是否可以锁定表以插入所选值

转载 作者:行者123 更新时间:2023-11-29 12:46:12 25 4
gpt4 key购买 nike

我想锁定一个表,这样当其他线程正在处理这些行集时,其他线程就不能插入任何带有(例如)user_id = 5 的行。虽然我可以锁定整个表,但这似乎太多并且会减少并发性。

我的线程正在执行以下操作,并且其中有很多线程同时运行。

Start Transaction
1) insert row with user_id=val
2) if (count (*) >= 2) where user_id = val and some other conditions then do "something"
COMMIT

现在,如果 2 个线程并行运行,那么它们可能都会得到 count(*) = 1,但是当它们都提交时,总行数是 2,这应该已经完成​​了“某事”

我的想法是,我需要在每个事务中锁定 user_id=val 的行,以便在我的事务完成之前没有人可以插入 user_id = val。

有没有办法使用 MySQL 和 Hibernate 来实现这一点。

最佳答案

使用锁定读取。

从表中选择 COUNT(*),其中 user_id = val 用于更新。

将锁定匹配的行直到事务结束。

http://dev.mysql.com/doc/refman/5.5/en/innodb-locking-reads.html

关于mysql - 是否可以锁定表以插入所选值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25402467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com