2011-05-24 49 views
2

我有一个表,其中主键使用序列填充。当前版本:回滚序列

CREATE SEQUENCE xxxx.SEQ_xyz 
START WITH 135 
MAXVALUE 999999999999999999999999999 
MINVALUE 1 
NOCYCLE 
NOCACHE 
ORDER; 

有一个应用程序从表中删除了一些行。发生这种情况时,我想获取下一个可用数字,而不是序列显示的数字。说我插入: 136 X 137 Ÿ 138ž

这样的顺序现在是139,如果我删除136,137,138,我想序列回到136,而不是停留在139.这可能?

在此先感谢。

+3

如果您只删除136和137,但138仍存在?如果删除136,137,138和另一个进程已插入140,但不COMMITED,所以你不能看到,140存在,怎么办? – 2011-05-24 21:42:40

+0

是的,会发生。 – CFNinja 2011-05-24 21:46:08

回答

2

回答你的问题是,写在每行触发器将取代以“开始”,这是将要删除的条目顺序之前删除。但是这会产生很多像Shannon Severance所提到的问题。 例如,136被删除,触发器替换旧的序列,现在序列以136开头。您将能够插入主键为136的东西,但下一次尝试在表格中插入数据时,您将不会能够插入它,因为它会违反主键约束(137,138会在那里的表)

我看不出有任何理由,你为什么去的地方回到以前删除没有。在你的序列中。你能详细说明一下吗?

+1

它会造成更多的伤害,所以我会保持原样。谢谢 – CFNinja 2011-05-25 16:06:37