你能在sql server 2008中为现有列添加标识吗?

时间:2010-02-15 17:01:31

标签: 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 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; 

5 个答案:

答案 0 :(得分:1)

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

如果未保存,则从菜单中转到工具 - 选项 - 表设计器 - 取消选中该复选框以阻止保存更改。现在你可以保存表修改。

现在你现有的桌子有了身份。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

你可以做这样的事情。

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

在SQL 2005及更早版本中,您无法将现有列修改为标识列。我认为MS在2008年改变这种状况的可能性非常小。