数据库更改主键的类型

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

 数据库更改主键的类型

修改主键类型

 数据库更改主键的类型

添加主键约束

 数据库更改主键的类型

数据库更改主键的类型

 

然后添加外键约束

 数据库更改主键的类型

成功!

 

总结: 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('表名');

 

上一篇:关于oracle中对已建表格进行约束的一些操作


下一篇:Java 36---短消息项目总结