加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 08:30:26 所属栏目:MsSql教程 来源:网络整理
导读:我有一张约1000万行的桌子.我们刚从SQL Server Management Studio从另一个数据库导入它.它创建表,但在主键列上没有标识和主键. 我可以添加主键,但不能添加身份.当我在设计师这样做的时候,这一直是超时的.即使我将超时设置设置为0. 我需要创建大概另一个列集主
我有一张约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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读