我正在使用 Java Spring 和 Oracle DB 创建一个应用程序。
在应用程序中,我想生成一个唯一且有序且没有间隙的主键值:1,2,3,4,5而不是1,2,5,7,8,9.
我曾一度用于max(id) + 1获取 id 的最大值以及下一个/当前事务的 id。但是我知道在多个用户或多个会话并发的情况下它并不完美。
我尝试过使用序列,但即使使用标签,ORDER它仍然可能会产生间隙,从而可能导致事务失败。
REATE SEQUENCE num_seq
START WITH 1
INCREMENT BY 1
ORDER NOCACHE NOCYCLE;
Run Code Online (Sandbox Code Playgroud)
我需要有无间隙的值作为要求,但是我不确定在多个用户/多个会话的情况下如何可能。