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

SQL修改school_student表主键为自增时遇identity语法错误,求解决

解决SQL Server修改主键为自增的语法错误问题

错误原因

SQL Server不支持直接通过ALTER COLUMN语句给已存在的列添加IDENTITY属性,这是语法层面的限制,所以你执行的语句会报错Incorrect syntax near the keyword 'identity'。

解决方案

根据表中是否有数据,提供两种可行方案:

方案1:表中无数据(或可清空数据)

直接删除原主键和列,重新添加带自增属性的主键列:

-- 先删除原主键约束(约束名需替换为实际名称,可执行sp_help school_student查看)
ALTER TABLE school_student DROP CONSTRAINT PK__school_s__3213E83FXXXXXX;
-- 删除原id列
ALTER TABLE school_student DROP COLUMN id;
-- 添加带自增的id列并设置为主键
ALTER TABLE school_student ADD id INT NOT NULL IDENTITY(5,1) PRIMARY KEY;

方案2:表中有数据需保留

通过临时表迁移数据,避免数据丢失:

-- 1. 创建临时表,id设为自增主键
CREATE TABLE school_student_temp (
    id INT NOT NULL IDENTITY(5,1) PRIMARY KEY,
    name VARCHAR(20),
    DOB Date,
    Address VARCHAR(50),
    phone_no INT
);

-- 2. 开启自增列插入权限,将原表数据导入临时表(如需保留原id值则执行此步骤,否则跳过SET语句直接插入)
SET IDENTITY_INSERT school_student_temp ON;
INSERT INTO school_student_temp (id, name, DOB, Address, phone_no)
SELECT id, name, DOB, Address, phone_no FROM school_student;
SET IDENTITY_INSERT school_student_temp OFF;

-- 3. 删除原表
DROP TABLE school_student;

-- 4. 将临时表重命名为原表名
EXEC sp_rename 'school_student_temp', 'school_student';

内容的提问来源于stack exchange,提问作者Ammu Samu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 01:06:30