sqlserver 中已经有了表,也有数据,我想增加一个新列为主键,怎么加?

sqlserver 中已经有了表,也有数据,我想增加一个新列为主键,怎么加? 新列是空的 表中数据也不能删除 ,不能重新建表, 有什么办法加进去这个主键么?
图片说明

必须借助临时表转换下。
可以新建一个表,带有主键、自增、字段都相同,然后用
insert into newtable select * from table1
然后
drop table1
EXEC sp_rename ‘newtable’, ''table1;

主键不应该是唯一的吗?

先确定字段属性为“not null”
alter table 表名 alter column 列名 int not null
表内主键字段无重复数据后执行
alter table 表名 add constraint 约束名 primary key(列名)

先新添加主键id字段 不为空 不自增加 然后在代码遍历读取表中数据 然后遍历 将设置的id每次遍历插入进去,id值可以为0 每次遍历id++;也可以使用uuid,针对这个需求只能通过写代码解决,数据库层面感觉不好解决

例如:alter table stu add id int unsigned primary key first;
stu是表名,id是新列的列名,int unsigned是新列的数据类型,primary key是设置为主键,first是将新增的列放在第一列的位置

你的表是联合主键?上面的回答中有能解决的。
首先如果你增加的字段做为主键就意味着你必须让该字段有值。先添加这个字段,然后给字段附上值,最后添加为主键。

数值为空的话怎么都不可能加为主键的

新建一个表,新表里包含所有列,包含要加入的主键设置为自动增长,然后把旧表数据导入新表就好了。

alter table 表名 drop constraint ... ---填主键约束名
alter table 表名 add primary key(...) ---如果把原来四个字段跟新增的同时设为主键,填原来的四个主键约束字段和新增的字段;如果把新增字段设为主键,填该新增字段