如何在达到限制时将标识列的值循环回 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 demoMAXVAL设置为2:可以看到插入的第三行得到id1.