Sql server SQLSERVER:如何将现有的表int主键更改为标识列?
我的数据库有一个包含数千条记录的表。主键是一个整数。与此列关联的外键约束很多 我想将此列更改为标识键。最好的方法是什么?我还需要将此更新发送给我们的客户Sql server SQLSERVER:如何将现有的表int主键更改为标识列?,sql-server,database,sql-server-2000,primary-key,identity,Sql Server,Database,Sql Server 2000,Primary Key,Identity,我的数据库有一个包含数千条记录的表。主键是一个整数。与此列关联的外键约束很多 我想将此列更改为标识键。最好的方法是什么?我还需要将此更新发送给我们的客户 在Sql Server 2000中工作的答案可获得额外积分。在Enterprise Manager中,右键单击表视图中的表,选择设计 单击列的左侧(然后,双击“列属性”下的“列”中的“标识”将其启用,默认为“自动递增1”如果列作为现有关系的一部分是整数,则它已经是唯一的。因此,您不必担心重复!这已经避免了一个巨大的麻烦 您可以发出ALTER T
在Sql Server 2000中工作的答案可获得额外积分。在Enterprise Manager中,右键单击表视图中的表,选择设计
单击列的左侧(然后,双击“列属性”下的“列”中的“标识”将其启用,默认为“自动递增1”如果列作为现有关系的一部分是整数,则它已经是唯一的。因此,您不必担心重复!这已经避免了一个巨大的麻烦 您可以发出ALTER TABLE命令来更改列,也可以使用Enterprise Manager进行更改。没有一个“ALTER TABLE”DDL可用于将现有列更改为标识列。您只能将新标识列添加到现有表中 这可以在Enterprise Manager中完成,但您需要知道Sql server正在创建一个新表并在后台复制您的数据。您可能对此有一些问题。下面有一篇文章对此进行了详细解释
在您的场景中,我认为您需要将此脚本与某些东西结合起来,以禁用并重新启用fk。SQL Server Management Studio中的一个强大功能挽救了我的一天 在SSMS中,转到选项->设计器->表和数据库设计器,选中“自动生成更改脚本”,取消选中“防止保存需要重新创建表的更改” 在对象资源管理器中,转到表并选择将获取标识规范的列。右键单击并选择“修改”。在列属性面板中,展开树“标识规范”并将“(Is Identity)”更改为“是”。现在在左上角的大小上,选择图标“生成脚本”。注意警告消息 现在,您将拥有一个生成的脚本,该脚本将删除所有约束,使用标识重新创建表,并重新创建约束。哇 我将测试它,并将结果发布在这里 更新:一切正常。我忘了在问题中说我需要脚本在客户端安装中复制修改
这个网站真是太棒了。我花在写我自己的答案上的时间,我得到了另外三个答案!你不觉得我的建议更简单吗?:)@STuart:这是同样的解决方案,但neves先保存了他的脚本。@neves:Enterprise Manager也有同样的“更改和保存”的概念@gbn-我知道,谢谢你这么说:)为了让事情变得简单,为什么要生成你不需要的脚本呢need@Stuart:我忘了说我必须将升级发送给我们的客户。我需要记录我所做的,并将其放入我们的数据库模式更新程序中。这些脚本是非常必要的。