回滚序列

时间:2011-05-24 21:39:44

标签: 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,我希望序列回到136而不是停留在139.这可能吗?

提前感谢。

1 个答案:

答案 0 :(得分:2)

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

我没有看到任何理由为什么你要回到以前删除的没有。在你的序列中。你能详细说明吗?