【发布时间】:2010-09-23 10:11:14
【问题描述】:
我的要求是从数据库中获取一个唯一的 ID,以便在应用程序服务器(集群应用程序)上进行处理。为此,我有一个带有单个单元格的表,其中包含一个值 X。 该值将在每次获取时递增。
BEGIN TRAN
UPDATE ID_TABLE SET VALUE = VALUE + 1
SELECT VALUE FROM ID_TABLE
END TRAN
考虑如下发生的两个事务(T1 和 T2)的时间表。 更新(T1),更新(T2),阅读(T1),阅读(T2)
对于数据库事务,这种交错是可能的吗?
除了在开始时获取表上的锁并在最后释放它之外,还有什么方法可以避免这种情况,这将隔离事务?
【问题讨论】:
标签: database transactions concurrency