一个客户表, 
cus (cusid, cusname, cusaddress,..........)
现个用户同过通过 ASP.NET 查询了数据.A 用户将 cusname 修改后保存,
update cus  set cusname=@cusname , cusaddress= @cusaddress ........ where cusid=@cusid这时,B用户将cusaddress 进行了修改, 但B用户并不知道 A 更新了 cusname , 因为再 B的界面上看到
的仍是旧的名称, B 用户也执行了 
update cus  set cusname=@cusname , cusaddress= @cusaddress ........ where cusid=@cusid
如果没有并发处理的话,将会是以"后者胜出的更新"的方式对数据进行了更新,A用户的更新结果将无效,这种情况应如何处理呢?

解决方案 »

  1.   

    用乐观锁定,表中增加VERIFY字段,类型设置为ROWVERSION类型,读取记录时调用VERIFY字段,写入时判断VERIFY字段是否等于读取时的值,不等于时则不能更新。
    你可以看联机帮助的TIMESTAMP或者ROWVERSION字段类型。
      

  2.   

    timestamp 的数据类型为 rowversion 数据类型的同义词,并具有数据类型同义词的行为。在 DDL 语句,请尽量使用 rowversion 而不是 timestamp。有关详细信息,请参阅数据类型同义词 (Transact-SQL)。Transact-SQL timestamp 数据类型不同于在 ISO 标准中定义的 timestamp 数据类型。注意: 
    不推荐使用 timestamp 语法。后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序 
    ----------------------------------------------------
    以上是 SQL  server 2008 联机说明中的
      

  3.   

    分数太少, 但我还是教你了
    timestampalter table 
    add add_column timestamp 查询出add_column的数值@add_column
    当更新的时候加上
    update 表
    where add_column=@add_column如果影响行数字不为1,提醒界面上