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


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

     

    修改主键类型

     

    添加主键约束

     

    然后添加外键约束

     

    成功!

     

     

  • 相关阅读:
    linux三剑客之一:grep详细介绍
    Linux less命令:查看文件内容
    django-crontab执行定时任务
    mahout的数据处理--【根据文本文件创建vector】
    hbase编程demo
    hive0.11安装与配置
    hadoop1.1.2升级1.2.1
    hadoop 1.1.2和 hive 0.10 和hbase-0.94.10-security整合
    hbase配置
    hbase与storm的冲突
  • 原文地址:https://www.cnblogs.com/zhengbao/p/10740567.html
Copyright © 2020-2023  润新知