我不太确定java JDBC的自动提交模式,我正在建立一个自动提交模式设置为false的连接。之后我在数据库上激活了一个select查询,工作正常,我的印象是必须只为insert,update,delete语句调用commit。
现在我需要为Select查询提交连接吗?如果不是,那个表会被锁定用于其他交易吗?
谢谢, 罗希特夏尔。
答案 0 :(得分:1)
这取决于您的隔离级别。如果您使用READ COMMITTED
,则SELECT
仅在您指定SELECT FOR UPDATE
时才会创建锁定。如果您使用REPEATABLE READ
或更高版本,则每个SELECT
都可以创建一个锁(取决于您的数据库模型)。
答案 1 :(得分:-2)
我不太确定java JDBC的自动提交模式,我正在建立一个自动提交模式设置为false的连接。之后我在数据库上激活了一个select查询,工作正常,我的印象是必须只为insert,update,delete语句调用commit。
这取决于您的申请。如果有简单的更新,插入,删除,您可以离开 autocommit = on 。一般来说,它建议不要自动提交。该配置为您提供了更大的灵活性和应用能力。您可以使用复杂的交易,您可以决定交易何时开始以及何时结束。
现在我需要为Select查询提交连接吗?如果不是,那个表会被锁定用于其他交易吗?
不,选择语句不会开始事务(插入,更新,删除),因此在选择语句后不需要提交/回滚。有一个特殊情况选择锁定所选行并需要事务 - with for update clause