1

是否可以创建一个排除指定数字的序列,以便序列变量不会创建指定的数字。我可以使用以下 sql 语句创建序列

CREATE SEQUENCE s_test;

CREATE SEQUENCE s_test2
START WITH 10 INCREMENT BY 5
MINVALUE 10 MAXVALUE 20
CYCLE CACHE 2 ORDER;

我需要这种用法的原因是,一些表是在使用序列之前创建和使用的,表的 ID 可以说是 2、5、99、101。这意味着可以使用 id 1,3,6...98,100,我不希望它们不能通过从 102 开始的顺序来使用。

我只想知道如何创建一些排除号码集。

4

1 回答 1

2

好吧,该start with选项可让您从您喜欢的任何特定数字开始 - 一路跳过数字。

您可以创建自己的用户定义函数来返回所需的值。

或者,当nextval序列的 是您要跳过的数字时,您可以使用以下内容跳过该值:

alter sequence seq_name
increment by 124;

这在插入触发器中是可能的,例如,其中序列用于填充id值。

但是,我质疑您为什么要这样做。序列中的值通常是用于 id 的无意义数字。

编辑:

然后使用插入前触发器检查是否nextval已在使用中。如果是这样,只需增加该值即可。

于 2013-07-11T11:23:24.937 回答