如何在达到限制时将标识列的值循环回 1?
How to cycle an identity column's value back to 1 on reaching a limit?
我正在创建一个 table 并为其设置一个自动生成的值,从 1 开始,但我希望这个值有一个限制,然后再从 1 开始。
我应该用什么方式定义这样的列?
CREATE TABLE MYTABLE
(
ID NUMBER GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
NAME VARCHAR(100)
);
这是一种选择:
CREATE TABLE MYTABLE (
ID NUMBER GENERATED BY DEFAULT AS IDENTITY (
START WITH 1
INCREMENT BY 1
MAXVALUE 10
CYCLE
NOCACHE
),
NAME VARCHAR(100)
);
由于启用了 CYCLE
选项,序列在达到 MAXVALUE
中指定的值时会重置。我添加了 NOCACHE
选项,尽管这里并不是绝对必要的(唯一的要求是 CACHE
值必须小于 MAXVALUE
)。
这里是一个DB Fiddle demo,MAXVAL
设置为2
:可以看到插入的第三行得到id
1
.
我正在创建一个 table 并为其设置一个自动生成的值,从 1 开始,但我希望这个值有一个限制,然后再从 1 开始。
我应该用什么方式定义这样的列?
CREATE TABLE MYTABLE
(
ID NUMBER GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
NAME VARCHAR(100)
);
这是一种选择:
CREATE TABLE MYTABLE (
ID NUMBER GENERATED BY DEFAULT AS IDENTITY (
START WITH 1
INCREMENT BY 1
MAXVALUE 10
CYCLE
NOCACHE
),
NAME VARCHAR(100)
);
由于启用了 CYCLE
选项,序列在达到 MAXVALUE
中指定的值时会重置。我添加了 NOCACHE
选项,尽管这里并不是绝对必要的(唯一的要求是 CACHE
值必须小于 MAXVALUE
)。
这里是一个DB Fiddle demo,MAXVAL
设置为2
:可以看到插入的第三行得到id
1
.