在我的应用程序中,每当我更新DB中的记录时,我都会使用如下查询: udapte set .来自mytable ,其中状态=“normal”;
mytable中有一个名为as status的字段,如果插入/删除记录,该字段将以normal/cancel作为值。
现在,当我同时对mytable进行查询时,它工作得很好,并发性正在被处理(有三个人远程访问)。但现在我想知道这是哪种锁?乐观的,悲观的,或者两者都不乐观。
通过control增加了我已经拥有的疑问,因为我没有注册时间戳!
发布于 2014-09-24 07:25:23
在您的场景中,并发性不被处理。User1可以覆盖User2 2的数据,而不会看到或不知道User2 2的更新。
乐观锁定是在记录中使用像RowVersion这样的构造的地方。所发生的是User1获取记录和RowVersion,然后User2在第二时间获得记录。User1更新记录,RowVersion增量为2。User2尝试更新记录,但由于他/她的RowVersion是旧的,所以无法更新。
User1
UPDATE record
SET status = 'test', RowVersion = 2
WHERE RowVersion = 1;User2
UPDATE record
SET status = 'test2', RowVersion = 2
WHERE RowVersion = 1;该语句导致零条记录受影响,因为RowVersion更改为2。
https://stackoverflow.com/questions/26010795
复制相似问题