SQLSERVER:如何将现有的表int主键更改为标识列?

时间:2009-06-23 23:10:32

标签: sql-server database sql-server-2000 primary-key identity

我的数据库有一个包含数千条记录的表。主键是整数。这个专栏有很多外键约束。

我想将此列更改为标识密钥。最好的方法是什么?我还需要将此更新发送到我们的客户端安装。

在Sql Server 2000中有效的答案的奖励积分。

4 个答案:

答案 0 :(得分:14)

SQL Server Management Studio中有一个很棒的功能可以节省我的一天。

在SSMS中转到选项 - >设计师 - >表和数据库设计器,选中“自动生成更改脚本”并取消选中“防止保存需要重新创建表的更改”。

在object explorer中,转到您的表并选择将获得Identity规范的列。右键单击并选择修改。在Column properties面板中,展开树“Identity Specification”并将“(Is Identity)”更改为yes。现在在左上角的大小,选择图标“生成脚本”。注意警告信息。

现在,您将拥有一个生成的脚本,该脚本将删除所有约束,使用标识重新创建表,并重新创建约束。 WOW!

我会测试它并在此处发布我的结果。

更新:一切正常。我忘记在问题中说我需要脚本来重现客户端安装中的修改。

这个网站真是太棒了。我花了很多时间来写自己的答案我得到了另外3个人!

答案 1 :(得分:1)

在Enterprise Manager中,右键单击表视图中的表,选择设计。

单击列的左侧(然后,双击标识,在下面的列中,在列属性中,将其打开,默认为自动递增1

答案 2 :(得分:1)

没有单个“ALTER TABLE”DDL用于将现有列更改为标识列。您只能将新标识列添加到现有表。

这可以在Enterprise Manager中完成,但您需要知道Sql server正在创建一个新表并在后台复制数据。你可能会遇到一些问题。这篇文章解释了这一点http://www.mssqltips.com/tip.asp?tip=1397

在你的场景中,我认为你需要这个脚本的组合以及禁用和重新启用你的fk的东西。

答案 3 :(得分:0)

如果列是整数作为现有关系的一部分,那么它已经是唯一的。因此,您不必担心重复!这已经避免了一个巨大的麻烦。

您可以发出ALTER TABLE命令来更改列,也可以使用Enterprise Manager执行此操作。