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
我目前正在尝试了解如何在 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