none
sqlserver如何使用rowversion实施乐观并发控制呢? RRS feed

  • 问题

  • sqlserver如何使用rowversion实施乐观并发控制呢?

    我知道内存表已经是乐观并发控制了,但是传统的磁盘表呢,因为数据库默认是悲观并发的

    2015年6月8日 2:31

全部回复

  • 磁盘表是没有的,快照也只是针对查询可用,数据变更照样会锁
    2015年6月8日 2:34
  • 获取行版本,几乎没有人用rowversion来做乐观并发控制

    https://msdn.microsoft.com/zh-cn/vstudio/ms182776


    Love SQL

    2015年6月8日 7:06
  • 联机丛书是这样说的:

    可以使用以下示例 Transact-SQL 语句在更新期间实现 MyTest 表的乐观并发控制。

    DECLARE @t TABLE (myKey int);
    UPDATE MyTest
    SET myValue = 2
        OUTPUT inserted.myKey INTO @t(myKey) 
    WHERE myKey = 1 
        AND RV = myValue;
    IF (SELECT COUNT(*) FROM @t) = 0
        BEGIN
            RAISERROR ('error changing row with myKey = %d'
                ,16 -- Severity.
                ,1 -- State 
                ,1) -- myKey that was changed 
        END;

    2015年6月9日 4:18