SQL Server现有表添加IDENTITY(1,1)自增主键列报错求助
解决SQL Server添加自增主键列的语法问题
嘿,我明白你遇到的问题了——想给现有表加一个步长(1,1)的自增主键,但之前的语法不对导致报错,我来帮你梳理下正确的操作方式。
为什么你的语句会报错?
你尝试的第二条语句把列定义(含IDENTITY属性)和主键约束添加混在一起了,SQL Server不支持这种写法。IDENTITY是列的专属属性,必须在添加列的时候单独声明,而添加主键约束是另一个独立的操作,不能合并在同一句里执行。
正确的操作步骤
分两步执行就能搞定:
- 先添加带有IDENTITY属性的ID列
ALTER TABLE OLTMS_0B8DF2 ADD ID int IDENTITY(1,1);
这条语句会给表新增一个名为ID的整数列,同时设置它为自增列(起始值1,步长1)。如果表中已有数据,SQL Server会自动给现有行分配从1开始的连续数值。
- 再将ID列设置为主键
ALTER TABLE OLTMS_0B8DF2 ADD CONSTRAINT PK_OLTMS_0B8DF2_ID PRIMARY KEY (ID);
这里给主键约束起了一个明确的名字PK_OLTMS_0B8DF2_ID(你可以根据自己的命名规则修改),后续维护会更清晰。如果不想指定约束名,也可以简化成:
ALTER TABLE OLTMS_0B8DF2 ADD PRIMARY KEY (ID);
额外提醒
如果你的表之前已经存在主键约束,需要先删除原有主键才能添加新的,删除语法示例:
ALTER TABLE OLTMS_0B8DF2 DROP CONSTRAINT 原有主键约束名;
内容的提问来源于stack exchange,提问作者krishna mohan
相关产品推荐
相关产品推荐

