sql - 如何在达到限制时将标识列的值循环回 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 演示,它MAXVAL
设置为2
:您可以看到插入的第三行得到了id
1
。
推荐阅读
- html - 使用 sortable() 时无法对框进行排序
- python - 在python中,如何在不替换特定列的情况下生成随机抽样?
- arrays - 在映射函数之后遍历数组中的每个属性,然后返回新数组
- backend - 当后端服务器之一关闭时,haproxy 能否确保对后端服务器的每次调用都成功?
- tensorflow - ValueError: GRU(reset_after=False) 与 GRU(reset_after=True) 不兼容
- java - Azure Active Directory LDAP 密码更改
- nuxt.js - nuxt js 从服务器端访问组件数据
- gremlin - Tinkerpop 选择多个按顶点分组的邻居,它们是具有范围步长的邻居
- node.js - 授予节点 js 中 google drive api v3 上现有文件的权限
- apache-spark - 当行展平逻辑中存在错误/异常时,使用 Flatmap 函数跳过 Spark 数据集中的特定行