在默认的隔离级别下先读出数据然后再去修改可能会产生Lost update,但是如果提高隔离级别的话又会降低并发,使用下面的办法可以在Read commited隔离级别上避免Lost update.
1.可以使用衍生列比如timestamp.在更新之前先做检查,如果更新的时候发现 timestamp列已经更改说明列已经被修改了,报错。
2.使用存储过程,如果更新返回的值为0,说明之前数据已经被更改,报错。
3.可以有HASH函数CHECKSUM()。在更新之前先做HASH然后更新的时候检查HASH结构是不是一样,如果不一样的话说明数据已经被更改,报错。