如何在SQL Server中的列中添加标识?

前端之家收集整理的这篇文章主要介绍了如何在SQL Server中的列中添加标识?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一张约1000万行的桌子.我们刚从sql Server Management Studio从另一个数据库导入它.它创建表,但在主键列上没有标识和主键.

我可以添加主键,但不能添加身份.当我在设计师这样做的时候,这一直是超时的.即使我将超时设置设置为0.

我需要创建大概另一个列集主键和身份,从旧的复制数据,删除旧列并重新命名新的列.

任何人都可以告诉我,如果没有额外的过热,那么最好的办法是做这样的大桌子呢?

解决方法

您不能将IDENTITY添加到现有列.它根本无法做到.

您将需要创建一个类型为INT IDENTITY的新列,然后删除不再需要的旧列(并且可能将新列重命名为旧名称 – 如果需要)

另外:我不会在视觉设计器中这样做 – 这将尝试用新结构重新创建表,复制所有数据(全部为10万行),然后删除旧表.

使用直接T-sql语句更有效率 – 这将执行“就地”更新,非破坏性(无数据丢失),并且不需要在该进程中复制大约1000万行. .

ALTER TABLE dbo.YourTable
  ADD NewID INT IDENTITY(1,1) NOT NULL

当您添加一个类型为INT IDENTITY的新列到表中时,将自动填充连续的数字.您不能阻止这种情况发生,您也不能在以后更新值.

这些选项都不是非常有用的,最终你可能会得到不同的ID值….要做到这一点,你必须:

>提前创建新表,结构正确,IDENTITY已经到位
>然后在该表上打开SET IDENTITY_INSERT(yourtable)ON,以允许将值插入到标识列中
>从原始来源复制此数据
>再次关闭身份插入:SET IDENTITY_INSERT(yourtable)OFF

只有使用这种方法,您才能在新表中的IDENTITY列中获取相同的ID.

原文链接:https://www.f2er.com/mssql/76064.html

猜你在找的MsSQL相关文章