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