一个方法循环处理多条数据,每条数据有有更新update方法,更新同一个表,第一条数据执行完后,第二条数据在update 同一张表时,表已经锁定了,如何处理??
就是说第一条数据执行完,就让它把事物提交了,然后再执行第二条sql就不会出现表锁定了,
求大侠指导
执行到这个表的时候,update下就锁定, 然后执行select就等待了
---------------------------------
非常感谢大家的回答,这个问题解决了,同时更新多个表,有的表使用的hibernate的update方法,而我锁定的那个表使用的是jdbc的update方法导致的,事物锁应该不一样,步改成hibernate的就ok了。我描述的应该不对,到时候在研究下
你外面别开事务不就好了.本身事务就是为了保证原子性.你不要原子性.那你要事务干嘛.
现在好像就是这一个表锁定,其他的都表都ok,这是为什么?
@pengweid: 执行到这个表的时候,update下就锁定, 然后执行select就等待了
在同一个事务内是没有不会有锁的.事务内update后上的锁.在事务内是可以读写的.只是事务外会等待.
这种情况更大的可能是:上一个事务没有提交.也没回滚.就开了另一个事务开始select
不要使用表锁,而使用行锁更新数据或者是在同一个事务中更新多行数据
首先要想,你的表为什么会锁定
事物没有提交啊
整个方法结束后,才提交,我现在要做的是如何,单独提交
@pengweid: 所以你是用多线程处理多数据的吗?
@伪善者ql: 现在好像是每次更新这个表的时候就会锁定,其他表也更新,但是没锁定,这是什么原因??