sql序列id(来自dual的nextval)回滚

时间:2014-06-09 19:32:50

标签: java oracle

我创建了一个自动创建ID的序列,并且我已将其指定为从特定数字开始,比如100。

create sequence SEQ_I_LOVE_SQL start with 100 increment by 1

在我的Java逻辑中,下面的sql语句被称为

select I_LOVE_SQL.nextval from dual

这意味着创建了id 101。让我们说逻辑发生变化,需要从101回滚到100。我的Java逻辑中可以实现的SQL语句是什么?

1 个答案:

答案 0 :(得分:0)

如果确实需要回滚序列号的生成,则必须使用计数器表而不是序列。但是你应该记住,你在这个柜台上序列化你的交易,没有两个可以并行运行。首先,你应该检查它是否真的是一个严格的要求,更多的只是希望将id分配为事务性的,因为每个实现都会带来性能损失(我能想到的一个用例是发票编号,在某些法规中需要无间隙)。一旦确定重新连接需要它,请维护一个具有计数器值的表,并尝试尽可能晚地获取ID,以使争用窗口保持较小。