SQL:Oracle 19c 唯一 ID

SQL: Oracle 19c unique ID

我目前正在尝试了解如何在 SQL 中生成唯一 ID,例如 HID0014。我似乎找不到任何资源或文档来帮助解决这个问题,除了答案:

How to automatically generate unique id in SQL like UID12345678?

CREATE TABLE dbo.tblUsers
(
    ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
    UserID AS 'UID' + RIGHT('00000000' + CAST(ID AS VARCHAR(8)), 8) PERSISTED, 
    [Name] VARCHAR(50) NOT NULL,
)

我曾尝试在我的 Oracle 19c SQL plus 中使用它来生成 table,但出现错误。有人可以解释我是否使用了错误的语法吗?或者上面提供的代码对Oracle 19c无效。

使用标识列和虚拟列:

CREATE TABLE table_name
(
  id     INT GENERATED ALWAYS AS IDENTITY
         NOT NULL
         CONSTRAINT table_name__id__pk PRIMARY KEY,
  userid VARCHAR2(11)
         GENERATED ALWAYS AS (
           CAST('UID' || TO_CHAR(id, 'FM00000000') AS VARCHAR2(11))
         ),
  name   VARCHAR2(50)
);

然后:

INSERT INTO table_name (name)
SELECT 'Alice' FROM DUAL UNION ALL
SELECT 'Beryl' FROM DUAL UNION ALL
SELECT 'Carol' FROM DUAL;

SELECT * FROM table_name;
ID USERID NAME
1 UID00000001 Alice
2 UID00000002 Beryl
3 UID00000003 Carol

db<>fiddle here