3
我正在加載測試應用程序並獲取死鎖錯誤。該場景是由10個不同的用戶同時插入和更新數據庫。我在網上擡頭,仍然找不到解決問題的方法。這裏附上我涉及的死鎖的示例代碼。當在同一時間執行UPDATE時獲取死鎖
任何人都可以給我一些建議,以解決僵局?先謝謝你。
SampleController:
onSubmit(userAccount)
{
sampleBO.testDeadLock(userAccount.getUserAccountId());
}
SampleBO:
public void testInsert(Long id)
{
sampleDAO.testInsert4(id);
}
public void testDeadLock(Long id)
{
testInsert(id);
sampleDAO.testUpdate4(id);
}
SampleDAO:
public void testInsert4(Long id)
{
StringBuffer sbSql = new StringBuffer();
sbSql.append(" INSERT INTO Test ");
sbSql.append(" (");
sbSql.append(" id, ");
sbSql.append(" note ");
sbSql.append(") ");
sbSql.append(" VALUES ");
sbSql.append(" (");
sbSql.append(""+id+",");
sbSql.append(" 'test' ");
sbSql.append(")");
//Execute SQL using Spring's JDBC Templates
this.getSimpleJdbcTemplate().update(sbSql.toString());
}
public void testUpdate4(Long id)
{
StringBuffer sbSql = new StringBuffer();
sbSql.append(" UPDATE Test WITH(ROWLOCK) SET ");
sbSql.append(" note = 'test1111'");
sbSql.append(" WHERE id="+id);
//Execute SQL using Spring's JDBC Templates
this.getSimpleJdbcTemplate().update(sbSql.toString());
}
SQL的哪些品牌和版本? – RBarryYoung 2012-04-27 22:30:20
此外,請張貼表定義,包括任何鍵,索引,約束和/或觸發器,因爲它有90%可能是問題所在。 – RBarryYoung 2012-04-27 22:37:13
我錯過了什麼?它看起來像是在同時調用兩個執行,所以testUpdate4調用在插入完成之前不應該觸發。 – Kir 2012-05-02 20:23:55