6

我的数据库有一个包含数千条记录的表。主键是一个整数。有很多与此列相关的外键约束。

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

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

4

4 回答 4

17

SQL Server Management Studio 中有一个很棒的功能,它为我节省了很多时间。

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

在对象资源管理器中,转到您的表并选择将获得身份规范的列。右键单击并选择修改。在列属性面板中,展开树“身份规范”并将“(是身份)”更改为“是”。现在在左上角的大小上,选择图标“生成脚本”。注意警告信息。

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

我将对其进行测试并在此处发布我的结果。

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

于 2009-06-24T00:04:36.277 回答
1

在企业管理器中,右键单击表格视图中的表格,选择设计。

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

于 2009-06-23T23:15:31.307 回答
1

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

这可以在企业管理器中完成,但您需要注意 Sql server 正在创建一个新表并在后台复制您的数据。您可能对此有一些问题。这是一篇文章,对此进行了更多解释http://www.mssqltips.com/tip.asp?tip=1397

在您的情况下,我认为您需要将此脚本与禁用和重新启用 fk 的东西结合使用。

于 2009-06-24T00:00:21.857 回答
0

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

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

于 2009-06-23T23:29:29.033 回答