将标识列添加到T-SQL表中会破坏任何内容

时间:2014-05-15 13:34:33

标签: sql-server tsql sql-server-2005

我有一个拥有多个无密钥表的遗留数据库。首先,我真的只想在其上抛出一个Identity列,以便我可以将它与Entity Framework一起使用。现在,我知道我可以这样做:

alter table MyTable
add Id int identity(1,1)

但是,由于这是一个古老而野蛮的野兽,我想确保它不会破坏任何东西。我无法想象它会如何破坏任何触发器或现有的数据访问(其中一些仍然在VB 6中!)但是" cant'想象"与&#34完全相同;绝对确定。"

我希望数据库方面的一些专家可以在这里给我一些指导。

1 个答案:

答案 0 :(得分:2)

如果您的代码中包含任何“Select *”,则可能会破坏某些内容。

示例:

您创建一个包含3列的#temp表。

您的相关论坛有3列。

使用“select * from TheTable”填充#temp表。

现在您在表格中添加第4列。

您的代码现在会尝试将4列压缩到3列#temp表中。

拥有一个不是PrimaryKey的IDENTITY列可能是另一个snap-fu。