我正在尝试增加列的值并以线程安全的方式将其返回给调用者,虽然我在论坛中看到了许多提议的解决方案但我没有看到确保两个数据库的不同客户端将无法获得相同的结果。我要创建的表格如下:
Column Name Data Type
----------- --------------
Description varchar(50)
CurrentValue int
表格中的数据如下所示:
Description CurrentValue
---------------- ---------------------
Billing 123422
Policy 28383
因此,如果有可用的信息,我如何以线程安全的方式(没有竞争条件)增加CurrentValue列中的值并将其返回给导致它递增的用户?
我很确定我将运行的平台是DB2,客户端将是Java应用程序。
答案 0 :(得分:2)
数据库序列(example in Oracle DBMS)至少应该在PostgreSQL,MS SQL和Oracle中处理这个问题。因此,具有增量编号的列应该是ID
列(或原则上类似),从其绑定的序列中读取其值。
每次在序列上发生SELECT
(即读取)时,它的值就会递增,无论您以后使用该值如何。