2017-04-09 82 views
-1

在開始修改記錄之前是否有辦法鎖定一條記錄?在開始修改記錄之前是否有辦法鎖定一條記錄?

string stOpenConn = new FbConnectionStringBuilder { 
    Database = stPathFilename, 
    UserID = stUserID, 
    Password = stPassword, 
    ServerType = FbServerType.Embedded, 
    ClientLibrary = stCLIENT_LIBRARY 
}.ToString(); 

try { 
    using(FbConnection fbConn = new FbConnection(stOpenConn)) { 
     fbConn.Open(); 

     string stCmd = "UPDATE " + stTableName + " SET " + liststFieldNamesNoKeyID[0] + " = @p0"; 
     for (int iii = 1; iii < liststFieldNamesNoKeyID.Count(); iii++) 
      stCmd += ", " + liststFieldNamesNoKeyID[iii] + " = @p" + iii.ToString(); 
     stCmd += " WHERE" + stFieldKeyID + "= @p" + liststFieldNamesNoKeyID.Count().ToString(); 

     FbTransaction fbTransaction = fbConn.BeginTransaction(); 
     using (FbCommand fbCmd = new FbCommand(stCmd, fbConn, fbTransaction)) { 
      for (int iii = 0; iii < liststFieldNamesNoKeyID.Count(); iii++) { 
       string stPlaceHolder = "@p" + (iii).ToString(); 
       string stValue = liststNewValuesNoKeyID[iii]; 
       fbCmd.Parameters.AddWithValue(stPlaceHolder, stValue); 
      } 
      int iKeyID = Convert.ToInt32(stKeyID); 
      fbCmd.Parameters.AddWithValue("@p" + liststFieldNamesNoKeyID.Count().ToString(), iKeyID); 
      fbCmd.ExecuteNonQuery(); 
      fbTransaction.Commit(); 
     }//using 
    }//using 
}//try 

然後修改後發佈完成?

我認爲記錄鎖定發生在連接打開後...在BeginTransaction之前...並在fbTransaction.Commit之後釋放記錄鎖定。

+1

這是交易的目的。你想達到什麼目的? –

+0

目的是讓兩個人同時更改相同的記錄。根據您的評論,Mark Rotteveel看來,交易鎖定了記錄。在這篇文章之前,我曾經進行過互聯網搜索......沒有看到任何將交易鎖定在記錄上的事情。感謝您的澄清! – ttom

+0

如果更新,則另一個事務不能更新該記錄,而第一個事務尚未提交。 –

回答

相關問題