我的数据库有一个包含数千条记录的表。主键是整数。这个专栏有很多外键约束。
我想将此列更改为标识密钥。最好的方法是什么?我还需要将此更新发送到我们的客户端安装。
在Sql Server 2000中有效的答案的奖励积分。
答案 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执行此操作。