Translate Into English Coffee & Tea
ASP.NET 中的 AJAX ASP.NET 画图全接触 ASP.NET 与 XML 声明式数据绑定 ASP.NET 网页抓取
C# 基础 C# 类教程 C# 加密 ASP.NET 成员资格 非“自动化”处理 Excel
QuickAjax Ajax 完美的语法高亮器 Silverlight Popfly
通栏广告
利用timestamp避免更新冲突

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

文章评论
标题:必填
内容:
文章信息