qq_38284258
bug制造家
采纳率27.3%
2018-07-30 10:00 阅读 4.8k

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

5

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

8条回答 默认 最新

  • lizhiyuan_eagle 老刀聊JAVA 2018-07-31 02:29

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

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

    点赞 2 评论 复制链接分享
  • weixin_42190011 EsAcerThrea . 2018-07-30 10:09

    主键不应该是唯一的吗?

    点赞 评论 复制链接分享
  • qq_42074340 qq_42074340 2018-07-30 10:14

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

    点赞 评论 复制链接分享
  • qq_34735535 习惯守望 2018-07-30 11:15

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

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2018-07-30 13:28

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

    点赞 评论 复制链接分享
  • HK_JY 灬Change 2018-07-31 00:26

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

    点赞 评论 复制链接分享
  • moxuefeng moxuefeng 2018-07-31 03:26

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

    点赞 评论 复制链接分享
  • lstmsa lstmsa 2018-08-02 02:45

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

    点赞 评论 复制链接分享

相关推荐