如何在达到限制时将标识列的值循环回1?

问题描述

我正在创建一个表,并为其设置一个自动生成的值,从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