我的应用程序需要写入一个充当系统范围计数器的表,并且该计数器需要在整个系统及其所有应用程序中都是唯一的。
这个计数器目前在我们的 Oracle 数据库中作为一个表实现。
我的问题是:我需要写入这个计数器表(它使用一些键来保证每个业务流程中的计数器在系统中的唯一性)而不会将其锁定在当前事务中,因为多个其他进程可能会读取或写入这个表也是。计数器中的间隙无关紧要,但我无法提前创建计数器值。
在这种情况下,简单的序列对我没有帮助,因为序列号是一个格式化的数字。
目前,我有一些其他非数据库替代方案来实现这一点,但我想在一段时间内尽可能避免更改系统代码。
实际上,如果我可以打开一个不参与当前事务的新连接,写入表,然后关闭这个新连接,那将是最简单的,但是我疲惫的头脑找不到办法去做。
答案一定是显而易见的,但光现在还没有照在我身上。