-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 다음에 레코드 잠금을 해제한다고 가정합니다.
그게 무슨 거래입니다. 무엇을 성취하려고합니까? –
두 사람이 같은 기록을 동시에 변경하지 못하게하는 것이 목적입니다. 귀하의 의견 인 Mark Rotteveel을 토대로 거래가 기록을 잠그는 것으로 보입니다. 나는이 게시물 이전에 인터넷 검색을 수행했다 ... 기록을 잠그기 위해 거래를 묶은 것은 아무것도 보지 못했다. 설명 주셔서 감사합니다! – ttom
업데이트하면 첫 번째 트랜잭션이 커밋되지 않은 동안 다른 트랜잭션이 동일한 레코드를 업데이트 할 수 없습니다. –