我们是初学者,我们的 java 软件使用 select * 等从数据库中获取查询。
我的问题是我们是否需要在共享模式和“FOR UPDATE”中添加锁来强制执行锁,或者表和行锁是自动的吗?
我们有一张要强制并发的表,我可以将 LOCK TABLE 添加到我需要锁定的表中,然后更新值,然后解锁它吗?
我认为根据您对我的评论的回答,您真的不必担心手动处理表锁。InnoDB 支持行级锁定并启用自动提交(默认情况下)所有单个查询实际上都以事务方式处理。
现在,如果您有多个 SQL 查询需要作为单个事务处理(即更新一个表,然后更新另一个表 - 要么都成功,要么都回滚),那么您需要专门启动一个事务并提交它或在临时查询执行后回滚。
如果需要更改事务隔离级别,也可以使用SET TRANSACTION
语句(默认为 `REPEATABLE READ1)。
有关更多信息,请查看MySQL 文档