MS SQL创建表时INT(size)与UNSIGNED语法报错求助
解决MS SQL创建表时的INT(4)、UNSIGNED、AUTO_INCREMENT语法错误
你遇到的问题是把MySQL的语法直接套用到MS SQL上了,二者在整数类型、自增属性、无符号设置上的语法差异很大:
错误点拆解
- INT(4):MS SQL不支持INT后加括号指定数字(这是MySQL的「显示宽度」语法,仅用于客户端显示,不影响实际存储)。MS SQL的INT类型固定占4字节,存储范围为-2147483648到2147483647,无需额外指定尺寸。
- UNSIGNED:MS SQL没有UNSIGNED关键字,若要实现无符号整数的效果,可给列添加CHECK约束限制数值≥0。
- AUTO_INCREMENT:MS SQL里的自增属性用
IDENTITY(起始值,步长)表示,比如IDENTITY(1,1)就是从1开始,每次自增1。
修正后的SQL语句
如果需要创建自增主键并模拟无符号效果,可用以下语句:
CREATE TABLE Products ( ProductID INT IDENTITY(1,1) PRIMARY KEY, CONSTRAINT CHK_Products_ProductID CHECK (ProductID >= 0) );
关于「定义列宽度」的说明
MS SQL中整数类型的存储大小是固定的,不存在MySQL那样的「显示宽度」设置。如果是想限制输入的数字位数,同样可以用CHECK约束,比如限制ProductID为4位以内的正整数:
CREATE TABLE Products ( ProductID INT IDENTITY(1,1) PRIMARY KEY, CONSTRAINT CHK_Products_ProductID CHECK (ProductID BETWEEN 1 AND 9999) );
内容的提问来源于stack exchange,提问作者Zwnow
相关产品推荐
相关产品推荐

