• 数据库更改主键的类型-主键存在外键


    总结: SQLserver想要修改主键的数据类型

    如果有外键 那么删除主键与外键的约束

    修改主键的数据类型 添加此表主键约束 如果外键也是另一个表的主键 那么继续删除此表主键的约束 修改此column的数据类型 添加此表主键约束  添加外键约束

    if(A.column = A.primarykey){

           if(A.column = B.foreignkey)

           {

                  drop constraint A.primarykey

                  drop constraint B.foreignkey

                  alter A.column

                  add constraint A.primarykey

                  if(A.column = B.primarykey){

                         drop constraint B.primarykey

                         alter B.column

                         add constraint B.primarykey

                         add constraint B.foreignkey

                  }

           }

           else{

                  drop constraint A.primarykey

                  alter A.column

                  add constraint A.primarykey

           }

    }

     

    查看表的外键约束代码

    SELECT name

      FROM sys.foreign_key_columns f

      JOIN sys.objects o

        ON f.constraint_object_id = o.object_id

     WHERE f.parent_object_id = OBJECT_ID('表名');

    例子:

    将主键Sno的类型改为char(11)

     

    先删除外键 再修改主键类型 然后添加外键

    alter table Student

    drop constraint PK_Student       //这个是主键约束

    alter table SC

    drop constraint FK__SC__Sno__3F466844   //这个是外键约束  在另一个表SC 中

     

    FK__SC__Sno__3F466844经过查询外键已经被删除

    接下来修改主键数据类型 

     

     

    主键类型修改成功, 但是现在已经不是主键了,所以接下来添加主键约束

     

    测试一下结果在有主键约束的条件下也不能修改主键类型  好麻烦啊  (纯测试用) 

     

    所以接下来修改外键类型时 因为外键在SC表中也是主键 所以同样主外键约束都要删除 然后修改再添加

    删除SC的主键约束 然后修改类型 添加类型

     

    修改主键类型

     

    添加主键约束

     

    然后添加外键约束

     

    成功!

     

     

  • 相关阅读:
    前端百度地图开发使用总结
    换电脑后如何同步git本地仓库及分支
    vue mint-ui初次使用总结
    git学习入门总结
    深夜,当音乐响起,数据在MySQL中静静的疯狂计算
    且说Tomcat、Servlet、JSP和Spring
    国庆与中秋7天死磕Web的时光
    Android编程初涉,以控制摄像头为例
    谈现阶段如何形成可行的健康生活习惯方案
    说Java网络编程
  • 原文地址:https://www.cnblogs.com/zhengbao/p/10740567.html
Copyright © 2020-2023  润新知