我想在 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
)