2017-04-09 81 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

如果更新,则另一个事务不能更新该记录,而第一个事务尚未提交。 –

回答

相关问题