我正在创建一个Foods表,我可以在其中为插入表中的每种食物自动生成一个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
);
我希望创建表,并且如果我给出一个id(即1),则应该创建一个id作为itemId00000001。 但是我遇到了一个错误,错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在'(ID int IDENTITY(1,1)NOT NULL PRIMARY KEY CLUSTERED,ItemId AS'itemId'+ RIGHT('在第1行
答案 0 :(得分:0)
在MySQL documentation中,仅NDB存储引擎支持计算列。我的猜测是您使用的是默认存储引擎InnoDB,因此您将无法使用计算列。
此外,您似乎在混合使用SQL Server和MySQL语法。
考虑到这两个因素,建议使用以下create语句,然后在表顶部构建一个视图,以生成所需的项目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
)