我正在尝试在 MySQL 中创建一个表,它在未签名和枚举附近给我错误 [关闭]

问题描述 投票:0回答:1
CREATE TABLE person
 (person_id SMALLINT UNSIGNED,
 fname VARCHAR(20),
 lname VARCHAR(20),
 eye_color ENUM('BR','BL','GR'),
 birth_date DATE,
 street VARCHAR(30),
 city VARCHAR(20),
 state VARCHAR(20),
 country VARCHAR(20),
 postal_code VARCHAR(20),
 CONSTRAINT pk_person PRIMARY KEY (person_id)
 );

我期待它创建一个表

这是我得到的错误

消息 102,级别 15,状态 1 第 4 行“UNSIGNED”附近的语法不正确。完成时间:2023-04-25T13:13:37.8984135-04:00》

sql sql-server enums create-table unsigned
1个回答
0
投票

你没有使用 MySQL。您正在使用 Microsoft SQL Server。

尽管共享一个共同的第一个音节,但这是两个不同的软件产品,具有不同的功能。在某些情况下,适用于 MySQL 的 SQL 语法和数据类型不适用于 Microsoft SQL Server,反之亦然。

例如,Microsoft SQL Server 不支持 UNSIGNED 或 ENUM。

在 Microsoft SQL Server 中,您可以使用:

而不是 SMALLINT UNSIGNED
person_id SMALLINT CHECK (person_id >= 0)

在 Microsoft SQL Server 中,您可以使用:

而不是 ENUM
eye_color CHAR(2) NOT NULL CHECK (eye_color IN ('BR','BL','GR'))

但是,我认为将眼睛颜色限制那么多并不是一个好的设计。还有其他颜色,如淡褐色、灰色或其他颜色。有些人的眼睛颜色各不相同。真实人物的变化比你想象的要多。可能您会更明智地使用 VARCHAR(20)。

© www.soinside.com 2019 - 2024. All rights reserved.