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

     

    修改主键类型

     

    添加主键约束

     

    然后添加外键约束

     

    成功!

     

     

  • 相关阅读:
    API之绘图函数
    DotNetCharting
    Rule engine
    股票
    PHP
    获取Excel.dll
    Excel develop
    几个不错的开源的.net界面控件[转贴]
    关于EXCEL文件双击打不开的问题
    Regular expression
  • 原文地址:https://www.cnblogs.com/zhengbao/p/10740567.html
Copyright © 2011-2022 走看看