【发布时间】:2023-03-05 03:16:01
【问题描述】:
我正在尝试创建一个最大编号为 999 的序列,但我面临的问题是,当我创建例如 5 个 ID 然后我删除第 3 个时,我的序列将创建 id 6,有没有触发避免空ID的方法?
例子
使用的 ID 1 2 3 4 5 我删除了3个 1 2 4 5
我做了一个插入,CURRENT 结果是 1 2 4 5 6
而我的目标是: 1 2 3 4 5
【问题讨论】:
-
为什么这是你的目标?这没有多大意义。在添加新行(id = 6)之前,您的数据看起来像 1 2 4 5。为什么可以(显然是这样,因为您没有尝试修复它),但是 1 2 4 5 6 是不行吗?
-
澄清我的评论:很多时候,聪明但新手开发人员认为他们必须有没有间隙的序列。这种信念是没有道理的;真正需要没有间隙的序列是非常罕见的。差距还可以。
-
但是如果我创建了一个序列并且我只有一行 id 为 999 并且我想创建另一行(我检查了最大值为 999)如果我创建一个新的 Id 将为 1 ?
-
即使回收id也会遇到同样的问题。如果您有 1,000 行或更多行怎么办?这就是为什么将您的 ID 限制为三位数也是一个非常糟糕的主意的原因。为什么ID不能为6位,甚至20位?
标签: sql database oracle oracle11g