我想在 sql 中自动生成唯一 ID
I want to automatically generate unique id in sql
我正在创建一个食物 table,我可以在其中为我插入 table 的每个食物自动生成一个 ID。
create table Foods (
(ID int IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
ItemId AS 'itemId' + RIGHT('00000000' + CAST (ID AS VARCHAR(8)), 8) PERSISTED,
item_name varchar(10),
price int
);
我想要创建 table,如果我给一个 id(即)1,它应该创建一个 id 为 itemId00000001。
但是我收到一个错误,错误 1064 (42000):您的 SQL 语法有误;检查与您的 MySQL 服务器版本对应的手册,了解在“(ID int IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,ItemId AS 'itemId' + RIGHT(' 附近使用的正确语法1
来自MySQL documentation,只有 NDB 存储引擎支持计算列。我的猜测是您使用的是默认存储引擎 InnoDB,因此您将无法使用计算列。
此外,您似乎混合了 SQL 服务器和 MySQL 语法。
考虑到这两个因素,我建议使用以下创建语句,然后在您的 table 之上构建一个视图,生成您想要的项目 ID:
CREATE TABLE Foods (
ID int NOT NULL AUTO_INCREMENT,
item_name varchar(10),
price int,
PRIMARY KEY(ID)
);
然后,创建一个可以生成您想要的计算项的视图:
CREATE VIEW Foods_View AS (
SELECT
ID,
RIGHT(CONCAT('00000000', CAST(ID AS CHAR(8))), 8) AS ItemId,
item_name,
price
FROM Foods
)
我正在创建一个食物 table,我可以在其中为我插入 table 的每个食物自动生成一个 ID。
create table Foods (
(ID int IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
ItemId AS 'itemId' + RIGHT('00000000' + CAST (ID AS VARCHAR(8)), 8) PERSISTED,
item_name varchar(10),
price int
);
我想要创建 table,如果我给一个 id(即)1,它应该创建一个 id 为 itemId00000001。 但是我收到一个错误,错误 1064 (42000):您的 SQL 语法有误;检查与您的 MySQL 服务器版本对应的手册,了解在“(ID int IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,ItemId AS 'itemId' + RIGHT(' 附近使用的正确语法1
来自MySQL documentation,只有 NDB 存储引擎支持计算列。我的猜测是您使用的是默认存储引擎 InnoDB,因此您将无法使用计算列。
此外,您似乎混合了 SQL 服务器和 MySQL 语法。
考虑到这两个因素,我建议使用以下创建语句,然后在您的 table 之上构建一个视图,生成您想要的项目 ID:
CREATE TABLE Foods (
ID int NOT NULL AUTO_INCREMENT,
item_name varchar(10),
price int,
PRIMARY KEY(ID)
);
然后,创建一个可以生成您想要的计算项的视图:
CREATE VIEW Foods_View AS (
SELECT
ID,
RIGHT(CONCAT('00000000', CAST(ID AS CHAR(8))), 8) AS ItemId,
item_name,
price
FROM Foods
)