zoukankan      html  css  js  c++  java
  • sql rowversion

    RowsVersion就是timestamp
     
    丢失更新的解决方法   
     
    丢失更新概念:当用户同时修改一行数据,他们先读取数据,放在前端进行修改,当修改后,再提交数据,这样最后提交的数据会覆盖先前提交的数据,这样就造成了丢失更新。
     
    长话短说,介绍防止丢失更新的方法:
     
    使用RowsVersion时间戳。
     
    每次更新的时候,mssql都会自动的更新rowversion的值,若一行在读前与更新前的值前后不一致,就说明有其他的事务更新了此列,这样就可以不更新此列,从而防止了丢失更新的情况。
     
    例子 :                                                                                                                                                                              declare table tmp(a varchar(10),b rowsversion)                                                                                                         
     
    insert into tmp(a) values( 'abc')
     
    事务A:
     
    declare @rv rowversion
     
    select @rv=b from tmp where a='abc'
     
    waitfor delay '00:00:05'
     
    update tmp set a='xyz' where b=@rv
     
    事务B:
     
    update tmp set a='aaa' where b=@rv
     
    事务A在执行完毕后会发现并没有将'aaa'给抹去,这样就防止了丢失更新的现象。
  • 相关阅读:
    第十五周作业
    十三周作业
    第十三周上机作业
    第十二周作业
    第十二周作业
    第十一周作业
    第十一周上机作业
    第十次上机作业
    第九周上机作业
    安卓第一周
  • 原文地址:https://www.cnblogs.com/xuzai/p/4717970.html
Copyright © 2011-2022 走看看