利用 timestamp 避免更新衝突

來源:互聯網
上載者:User

 

SQL Server 裡有資料類型 timestamp,這裡我們將利用 timestamp 來避免更新衝突。

比如一個內容管理系統,A 正在編輯某一篇文章,B 也正在編輯該文章,A 和 B 都不知道對方在編輯這篇文章,雙方儲存後,都以為已經成功儲存,實際上,資料庫中只儲存了最後提交的記錄(先提交的記錄被覆蓋),這就造成了資料庫中的資料與操作者所認為的不一樣。

要避免這種更新衝突,一種方法可以採用類比鎖的形式,一個人在編輯另一個人就不允許編輯,但比較麻煩,由於這種更新衝突並非常見,投入較大精力在這上面,不值。這裡使用 timestamp 輕鬆實現避免更新衝突。

1、表中增加一個欄位 tmstmp,類型為 timestamp,參見SQL Server中timestamp(時間戳記)。

2、編輯文章時。增加一個隱藏欄位 <input type="hidden" name="timestamp" value="<%=rs("tmstmp")%>">,參見如何顯示timestamp的值。

3、更新文章時。
sql = "update ... where id=" & id & " and tmstmp=" & tmstmp
conn.Execute sql, effectLines
if effectLines <= 0 then
    '更新失敗,可能是原記錄不存在,或者更新衝突
end if

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.