zoukankan      html  css  js  c++  java
  • 数据库更改主键的类型-主键存在外键

    总结: 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的主键约束 然后修改类型 添加类型

     

    修改主键类型

     

    添加主键约束

     

    然后添加外键约束

     

    成功!

     

     

  • 相关阅读:
    java注解,通过反射解析注解,模仿hibernate,获取sql语句。
    Eclipse/Myeclipse中查看和调试JDK源代码的方法
    TCP为什么会出现 RST
    《浅谈F5健康检查常用的几种方式》—那些你应该知道的知识(二)
    负载均衡服务TCP端口健康检查成功,为什么在后端业务日志中出现网络连接异常信息?
    haproxy的丰富特性简介
    健康检查概述
    firewall防火墙常用操作
    gitlab修改默认端口
    vim脚本判断操作系统
  • 原文地址:https://www.cnblogs.com/zhengbao/p/10740567.html
Copyright © 2011-2022 走看看