ado.net 事務 處理 鎖定資料行
阿新 • • 發佈:2019-02-20
using(SqlConnection conn = SqlConnection(MyConnectionString)) {
SqlCommand cmd1 = conn.CreateCommand();
cmd1.CommandText = "UPDATE NewsTable SET Hits = Hits + 1 WHERE NewsID = @NewsID ";
conn.Open();
using(SqlTransaction trans = conn.BeginTransaction(IsolationLevel.RepeatableRead)) { // 隔離級別:對讀取的資料加鎖,防止不可重複的讀取,但是仍可以有幻像行
cmd1.Trasnaction = trans;
try {
cmd1.ExecuteNonQuery(); // 更新
trans.Commit(); // 提交
} catch {
trans.Rollback(); // 回滾
throw;
}
}
}