You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

全局序列使用疑问:ID不连续、起始值异常及序列复用问题

关于共享序列的ID生成问题解答

1. 为何ID无法逐个连续生成?

你的序列设置了CACHE 20,数据库会预先缓存20个序列值,一旦数据库重启或会话异常中断,缓存中未使用的序列值会直接丢弃,造成ID跳号。另外,多个表共享同一序列时,不同表的插入操作会交替获取序列值,从单个表的视角看,ID自然无法保持连续——比如表A取了1,表B取了2,表A再取3,表A的ID就是1、3,出现断号。

2. 为何部分数据表的首条记录ID起始值为126这类非初始值?

你的序列START WITH 201,说明序列初始就从201开始计数。当多个表共享该序列时,若其他表先执行插入操作消耗了部分序列值,等目标表第一次插入时,序列已走到126这类数值,所以首条记录ID就是当前序列的下一个可用值。此外,之前发生过缓存序列值丢弃的情况,也会导致起始值偏离预期。

3. 是否需要为每个数据表单独创建序列?

如果要求每个表的ID严格连续、独立计数,必须为每个表单独创建序列。若仅需要唯一标识记录,不要求单表ID连续,共享序列也可使用,但要接受跳号和跨表占用序列值的情况。通常业务场景中,单表单独使用序列更符合ID语义(每个表的ID是自身的自增标识),也能规避共享带来的ID不连续、起始值异常等问题。

你的序列创建语句

CREATE SEQUENCE  "MMDS"."NEXT_ID"  MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 201 CACHE 20 NOORDER  NOCYCLE  NOKEEP  NOSCALE  GLOBAL ;

内容的提问来源于stack exchange,提问作者Pitt Bear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 19:29:52