0

我正在尝试增加列的值并以线程安全的方式将其返回给调用者,尽管我在论坛中看到了许多对此提出的解决方案,但我还没有看到一个可以确保两个不同客户的解决方案数据库不会得到相同的结果。我将要创建的表如下所示:

Column Name    Data Type
-----------    --------------
Description    varchar(50)
CurrentValue   int

表中的数据将如下所示:

Description           CurrentValue
----------------      ---------------------
Billing               123422
Policy                28383

因此,有了这些信息,我如何以线程安全的方式(没有竞争条件)增加 CurrentValue 列中的值并将其返回给导致它增加的用户?

我很确定我将在其上运行的平台是 DB2,而客户端将是 Java 应用程序。

4

1 回答 1

2

数据库序列(Oracle DBMS 中的示例)至少应该在 PostgreSQL、MS SQL 和 Oracle 中处理这个问题。因此,您的具有递增编号的列应该是ID从其绑定的序列中读取其值的列(或原则上类似的列)。

每次 a SELECT(即read)出现在序列上时,它的值都会递增,无论您稍后对该值做什么。

于 2012-05-10T14:16:29.630 回答