Oracle10g 回滚序列

Oracle10g 回滚序列,oracle10g,sequence,Oracle10g,Sequence,我有一个使用序列填充主键的表。当前版本: CREATE SEQUENCE xxxx.SEQ_xyz START WITH 135 MAXVALUE 999999999999999999999999999 MINVALUE 1 NOCYCLE NOCACHE ORDER; 有一个应用程序可以从表中删除一些行。当这种情况发生时,我希望得到下一个可用的数字,而不是序列显示的数字。假设我插入: 136 x 137 y 138 z 现在序列是139。如果我删除136、137、138,我希望序列返回到13

我有一个使用序列填充主键的表。当前版本:

CREATE SEQUENCE xxxx.SEQ_xyz
START WITH 135
MAXVALUE 999999999999999999999999999
MINVALUE 1
NOCYCLE
NOCACHE
ORDER;
有一个应用程序可以从表中删除一些行。当这种情况发生时,我希望得到下一个可用的数字,而不是序列显示的数字。假设我插入: 136 x 137 y 138 z

现在序列是139。如果我删除136、137、138,我希望序列返回到136,而不是停留在139。这可能吗


提前感谢。

您的问题的答案是,在每一行上写一个before delete触发器,该触发器将用将要删除的条目的“start with”替换序列。但这将产生很多问题,正如Shannon Severance提到的那样。 e、 g 136被删除,触发器替换旧序列,现在序列以136开始。您将能够插入主键为136的内容,但下次尝试在表中插入数据时,您将无法插入它,因为它将违反主键约束(表中将有137、138)


我看不出你有什么理由想回到之前删除的序列号。你能详细说明一下吗?

如果你只删除了136和137条,但138条仍然存在怎么办?如果你删除了136、137、138,而另一个进程插入了140,但没有提交,那么你就看不到140的存在了吗?这会造成更多的伤害而不是好处,所以我会保持原样。谢谢