【发布时间】:2020-08-28 10:52:56
【问题描述】:
我需要在 Oracle 中为我的表的列定义一个数字序列。 我得到的唯一约束要求所有值都以 9 开头。 因此,自动生成的值列表应如下所示:
9、90、91、92...99、900、901...999、9000、9001...9999、90000、...
您知道如何通过 SQL(通过适时创建和按顺序编辑)和/或 Java 代码来解决这个问题吗? 在我在网上阅读的一些帖子中,人们建议以这种方式修改序列:
ALTER SEQUENCE gokhan.sample_seq INCREMENT BY -500;
SELECT gokhan.sample_seq.NEXTVAL FROM dual;
ALTER SEQUENCE gokhan.sample_seq INCREMENT BY 1;
这需要每次都计算新的增量。如果可能的话,我想写一段 SQL 代码来自动化这个过程。
感谢支持。
【问题讨论】:
-
这听起来像是一个家庭作业。还有哪些额外的限制?
-
你不能只使用一个序列并添加一个 9 作为第一个数字吗?像 CONCAT('9',sequence.nextval)?
-
遗憾的是,这不是一个练习,但幸运的是没有其他限制。关于您的提示,是否可以将字符串与数值连接并将结果保存到数值列中?