Mysql 在数据库级别处理并发问题

Mysql 在数据库级别处理并发问题,mysql,jdbc,Mysql,Jdbc,如何处理并发访问数据库记录的多个用户,特别是如果您有一个仪器保留表,并且您希望防止两个用户保留同一个仪器如果他们试图同时保留它,我认为将隔离级别设置为serializable应该可以做到这一点,但事实证明,隔离级别并不能做到这一点,那么如何检测对条目的并发访问并回滚任何更改呢? 我正在使用JDBC和MYSQL服务器,以及InnoDB引擎 谢谢我将使用以下命令显式锁定行: START TRANSACTION SELECT ... FROM mytable WHERE id=? FOR UDPATE

如何处理并发访问数据库记录的多个用户,特别是如果您有一个仪器保留表,并且您希望防止两个用户保留同一个仪器如果他们试图同时保留它,我认为将隔离级别设置为serializable应该可以做到这一点,但事实证明,隔离级别并不能做到这一点,那么如何检测对条目的并发访问并回滚任何更改呢? 我正在使用JDBC和MYSQL服务器,以及InnoDB引擎


谢谢

我将使用以下命令显式锁定行:

START TRANSACTION
SELECT ... FROM mytable WHERE id=? FOR UDPATE
...
COMMIT TRANSACTION
在“选择更新”和提交之间,没有其他会话能够对该行执行“选择更新”。(但如果前面没有“选择更新”,其他会话将能够以旧状态读取该行,并且其他会话将能够写入和“选择更新”其他行和其他表。)

还可以检查MySQL文档-