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

Oracle 19c中如何实现带文本+自动编号的表列默认值

解决方案(Oracle 19c)

步骤1:创建序列

先定义两个自增序列,分别用于col1和col2的自动生成值:

CREATE SEQUENCE test_sq
  START WITH 1
  INCREMENT BY 1
  NOCACHE
  NOCYCLE;

CREATE SEQUENCE test_sq1
  START WITH 1
  INCREMENT BY 1
  NOCACHE
  NOCYCLE;
  • START WITH 1指定序列从1开始
  • INCREMENT BY 1设置每次递增1
  • NOCACHE避免预缓存序列值(适合小量数据场景)
  • NOCYCLE指定序列达到最大值后不循环

步骤2:创建目标表

修正原代码的错误,确保col2的类型和格式符合需求:

CREATE TABLE test (
    col1 NUMBER DEFAULT test_sq.NEXTVAL,
    col2 VARCHAR2(7) DEFAULT 'REQ-' || TO_CHAR(test_sq1.NEXTVAL, 'FM00000'),
    col3 VARCHAR2(20)
);

关键修正说明

  1. 类型匹配:原代码将col2定义为NUMBER,但需求是带字符前缀的字符串,因此改为VARCHAR2(7)(REQ-00001共7个字符)。
  2. 格式生成:使用TO_CHAR(test_sq1.NEXTVAL, 'FM00000')直接将序列值格式化为5位带前导零的数字字符串,再与REQ-拼接,比LPAD更直观可靠。FM用于去除格式转换时可能产生的空格。

测试验证

执行插入语句验证自动生成效果:

INSERT INTO test (col3) VALUES ('测试数据1');
INSERT INTO test (col3) VALUES ('测试数据2');

SELECT * FROM test;

查询结果示例:

COL1COL2COL3
1REQ-00001测试数据1
2REQ-00002测试数据2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 05:54:39