Sql server 在不删除列或表的情况下向列添加IDENTITY属性

Sql server 在不删除列或表的情况下向列添加IDENTITY属性,sql-server,identity,alter,Sql Server,Identity,Alter,我需要更改一列,但我不想删除表或列并重新创建它。有办法做到这一点吗?对不起,没有办法做到这一点。如果要将IDENTITY属性添加到现有列,则必须删除某些内容(表或列)。如果不删除列或表,则无法执行此操作 我建议使用以下场景来标识列: 1) 删除所有索引/约束 2) 从表中创建临时表 3) 删除表中的所有数据 4) 删除并重新创建具有标识的列 5) 从临时表填充您的表(注意您需要使用设置标识\u insert) 6) 创建已删除的索引和约束 7) Drop temporary table您可能需要

我需要更改一列,但我不想删除表或列并重新创建它。有办法做到这一点吗?

对不起,没有办法做到这一点。如果要将IDENTITY属性添加到现有列,则必须删除某些内容(表或列)。

如果不删除列或表,则无法执行此操作

我建议使用以下场景来标识列:

1) 删除所有索引/约束 2) 从表中创建临时表 3) 删除表中的所有数据 4) 删除并重新创建具有标识的列 5) 从临时表填充您的表(注意您需要使用
设置标识\u insert
) 6) 创建已删除的索引和约束
7) Drop temporary table

您可能需要添加一个标识列,并将数据复制到新列中,然后删除旧列并重命名新id列。@Michael如何将数据复制到新列中?您不能对标识列使用更新-仅在设置了IDENTITY_INSERT的情况下插入。这意味着新表,而不是新列。在重新插入所有内容时,使用临时表保存数据。或BCP数据输出-->添加id列-->删除旧列-->重命名id列-->BCP数据输入。您可以通过创建具有相同架构但
IDENTITY
属性的新表,然后使用
ALTER table。。。切换
以更改表元数据。表元数据可能重复