You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 22:20:21