SQL Server更改主键数据类型 [英] SQL Server Change Primary Key Data Type
本文介绍了SQL Server更改主键数据类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在处理SQL Server 2012
:
我有一个主键列为INT
的表。我需要将其更改为GUID。
是否要更改表并将int列删除为primary key
?
添加GUID列并将其设置为主要并删除旧的INT列?
谢谢。
推荐答案
您不能更改主键列,除非删除它。.任何更改其数据类型的操作都将导致以下错误..
对象‘XXXX’依赖于列‘XXXX’。
唯一选项是
1.删除主键2.更改数据类型
3.重新创建主键
ALTER TABLE t1
DROP CONSTRAINT PK__t1__3213E83F88CF144D;
GO
alter table t1
alter column id varchar(10) not null
alter table t1 add primary key (id)
从2012年开始,有一个名为(DROP_EXISTING = ON)
的子句,它通过在最后阶段删除聚集索引并为所有操作保留旧索引来使事情变得简单..但在您的情况下,这个子句将不起作用。
所以我推荐
1.使用所需的架构和索引创建新表,并使用不同的名称 2.将旧表中的数据插入到新表3.最后在切换时插入积累的数据
4.将表重命名为旧表名
这样您的停机时间可能会更短
这篇关于SQL Server更改主键数据类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文