比如要对某个会员的积分进行增加,如果这个会员在不同的电脑上同时登录了,同时进行了操作,就会多线程操作同一条记录,这样就会发生可能同时读取原积分累加的时候,有一次没有生效,怎么防止这种情发生?
查看一下sql事务, 就知道了,
begin tran
select jifen;
jifen+=;
update jifen;
commit tran
update tb set col=value where condition and timestampcol(or some column can be use as optimistic lock)=somevalue
用事务控制
用一楼说的事务或者数据行锁 更新的时候在表名称后面 加上 WITH(ROWLOCK)