在更新表时获取DeadLock

时间:2016-12-05 12:15:12

标签: spring sql-server-2005 mybatis

我们正在使用spring + mybatis + sqlserver。

场景就像我们有一个表,假设是transaction_table。我们在使用jdbc入站通道时收到了一些数据。获取数据后,我们在此表中插入。我们在此表中有一个状态列。

每个步骤后都需要更新。我们有一个持久层类,它具有调用dao层方法的所有数据库函数。我们正在使用注释进行事务处理..为此我们在方法的顶部添加了@Transaction。

在dao.xml中我们写了类似的东西 -

INSERT INTO TRANSACTION_DETAIL(
Column_1, Column_2, Column_3, Column_4
)
<foreach collection="transactionsSubLst" item="element" index="index" separator="union all">
SELECT

#bean.prop,jdbcType=INTEGER,
#bean.prop2,jdbcType=VARCHAR,
#bean.prop3,jdbcType=VARCHAR,
#bean.prop3,jdbcType=VARCHAR

</foreach>


<foreach collection="transactionsSubList" item="element" index="index" separator=";"> 
UPDATE TRANSACTION_DETAIL
<set>

Column_3=#element.targetSystem,
Column_4=#element.ruleName,
Column_2=#element.ruleVersion,
Column_1=#element.weightage

</set>
<where>
Column_1=#element.transactionNo
AND Column_2=#element.requestNumber 

</where>
</foreach>

当我们在单个节点上运行它时...我们很好,但是当我们移动到多个节点时,我们开始在更新时获得DeadLock ..

0 个答案:

没有答案