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

Oracle 19c运行SQL Server带前缀唯一ID建表语句报错如何解决

你使用的这段建表代码是SQL Server 专属语法,本身就不适用于Oracle 19c,语法规则差异是报错的核心原因。

核心语法差异说明

  • 自增列定义不同:SQL Server 使用IDENTITY(1,1)定义自增列,同时支持CLUSTERED关键字指定聚簇主键,这两个语法规则均不被Oracle支持。
  • 计算列定义不同:SQL Server 使用AS 表达式 PERSISTED定义持久化计算列,字符串拼接用+运算符,该写法不符合Oracle规范。
  • 标识符转义规则不同:SQL Server 使用方括号[]转义包含特殊字符/关键字的标识符,Oracle需使用双引号,且双引号包裹的标识符会强制区分大小写,不建议随意使用。

Oracle 19c 适配实现方案

你需要的HIDxxxx格式(前缀+4位补零自增数)的唯一ID,对应建表代码如下:

CREATE TABLE tblUsers
(
    ID INT GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1) NOT NULL PRIMARY KEY,
    UserID GENERATED ALWAYS AS ('HID' || LPAD(ID, 4, '0')) VIRTUAL,
    Name VARCHAR(50) NOT NULL
);

说明

  1. 如果需要将UserID的值物理存储在表中(对应SQL Server的PERSISTED属性),可以把上述语句中的VIRTUAL改为STORED即可。
  2. 如果需要调整补零位数,比如要生成8位长度的数字后缀(HID00000014),把LPAD(ID, 4, '0')中的4改成8即可。

效果验证

插入测试数据:

INSERT INTO tblUsers (Name) VALUES ('测试用户1');
INSERT INTO tblUsers (Name) VALUES ('测试用户2');

查询结果:

SELECT ID, UserID, Name FROM tblUsers;

就能得到符合要求的HID0001、HID0002格式的唯一ID。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:27:03