Sql server 是否可以向sql server 2008中的现有列添加标识?

Sql server 是否可以向sql server 2008中的现有列添加标识?,sql-server,sql-server-2008,Sql Server,Sql Server 2008,在我的所有搜索中,我发现您基本上必须将现有表复制到新表中,才能在2008年之前识别列,这是否也适用于2008年 谢谢 迄今为止,我找到的最简洁的解决方案是: CREATE TABLE Test ( id int identity(1,1), somecolumn varchar(10) ); INSERT INTO Test VALUES ('Hello'); INSERT INTO Test VALUES ('World'); -- copy the

在我的所有搜索中,我发现您基本上必须将现有表复制到新表中,才能在2008年之前识别列,这是否也适用于2008年

谢谢

迄今为止,我找到的最简洁的解决方案是:

CREATE TABLE Test 
 ( 
   id int identity(1,1), 
   somecolumn varchar(10) 
 ); 

 INSERT INTO Test VALUES ('Hello'); 
 INSERT INTO Test VALUES ('World'); 


 -- copy the table. use same schema, but no identity 
 CREATE TABLE Test2 
 ( 
   id int NOT NULL, 
   somecolumn varchar(10) 
 ); 

 ALTER TABLE Test SWITCH TO Test2; 

 -- drop the original (now empty) table 
 DROP TABLE Test; 

 -- rename new table to old table's name 
 EXEC sp_rename 'Test2','Test'; 

 -- see same records 
 SELECT * FROM Test; 

在我读到的关于2008年的所有新特性文档中,向现有列添加标识并不是我记得的特性。您找到的解决方案是正确的,我认为自动向列添加标识增量的过程很少有用。

在我读到的关于2008年的所有新功能文档中,向现有列添加标识并不是我记得的功能。您找到的解决方案是正确的,我认为自动向列添加标识增量的过程很少有用。

您可以这样做

ALTER TABLE my_table ADD ID_COLUMN INT IDENTITY (1,1) NOT NULL

你可以这样做

ALTER TABLE my_table ADD ID_COLUMN INT IDENTITY (1,1) NOT NULL

您可以使用Enterprise Manager/Management Studio的GUI将IDENTITY属性添加到现有列。

您可以使用Enterprise Manager/Management Studio的GUI将IDENTITY属性添加到现有列。

在SQL 2005及更早版本中,您无法将现有列修改为IDENTITY列。我认为MS不太可能在2008年改变这一点。

在SQL 2005及更早版本中,您无法将现有列修改为标识列。我认为MS不太可能在2008年改变这一点。

我们不能使用sql命令向现有列添加标识,但我们可以使用GUI。 右键单击表-设计-选择要添加标识的列。 转到下面可用的属性。找到标识规范并将其设置为“是”。 保存表格

如果未保存,请从菜单-选项-表格设计器-取消选中“防止保存更改”复选框中转到“工具”。现在可以保存表修改


现在,您的现有表具有标识。

我们无法使用sql命令将标识添加到现有列,但可以使用GUI进行添加。 右键单击表-设计-选择要添加标识的列。 转到下面可用的属性。找到标识规范并将其设置为“是”。 保存表格

如果未保存,请从菜单-选项-表格设计器-取消选中“防止保存更改”复选框中转到“工具”。现在可以保存表修改


现在您的现有表有了标识。

如果它像SQL 2005和更早版本一样工作,SSMS真正要做的就是创建一个新表,复制数据,删除旧表,并将新表重命名为新名称。让SSMS编写脚本并检查实际情况。(可能是在更新现有列?!)只是一个警告,不要让SSMS在大型表上执行此操作,除非您的数据库处于某种维护模式,并且访问此表的用户没有主动连接。如果它像SQL 2005或更早版本一样工作,SSMS真正做的是创建一个新表,通过,删除旧表,并将新表重命名为新名称。让SSMS编写脚本并检查实际情况。(可能正在更新现有列?!)只是一个警告,不要让SSM在大型表上执行此操作,除非您的数据库处于某种维护模式,并且访问此表的用户没有主动连接。我们在“服务器”数据库和客户端数据库上有相同的表,其中一个没有标识,我需要在一个没有标识的表中创建测试数据。将测试数据转储到表中不需要标识列。您不能直接使用ROW_NUMBER()并显式填充该列吗?如果您正在创建测试数据,难道您不能首先删除表并重新创建它吗?这是支持表的方式,而不是本地数据库中的标识字段。您能给出一个带有行号()的插入示例吗?谢谢。我认为这会起作用:在测试中插入(id,somecolumn)选择ROW_NUMBER()OVER(ORDER BY id),Test2中的somecolumn我们在“服务器”数据库和客户机数据库上有相同的表,一个没有标识,我需要在没有标识的表中创建测试数据。将测试数据转储到表中不需要标识列。您不能直接使用ROW_NUMBER()并显式填充该列吗?如果您正在创建测试数据,难道您不能首先删除表并重新创建它吗?这是支持表的方式,而不是本地数据库中的标识字段。您能给出一个带有行号()的插入示例吗?谢谢。我认为这会起作用:插入到测试中(id,somecolumn)选择ROW_NUMBER()OVER(ORDER BY id),Test2I中的somecolumn我认为从我读到的所有内容和上面的响应来看,这不起作用。这会添加一个新列,不会将IDENTITY属性添加到现有列中。是的,但是,可能更容易添加一个单独的标识列,然后删除现有的标识列-除非他已经使用它作为主键,与其他表具有FK关系。我认为从我所读的所有内容和上面的响应来看,这不起作用。这会添加一个新列,而不会将标识属性添加到现有列。是的,但是,可能更容易添加一个单独的标识列,然后删除现有的标识列,除非他已经将其用作主键,并与其他表建立FK关系。