首页 > 数据库 > mysql教程 > 如何向现有的包含数据的 SQL Server 表添加标识列?

如何向现有的包含数据的 SQL Server 表添加标识列?

Patricia Arquette
发布: 2025-01-22 23:01:11
原创
396 人浏览过

How Can I Add an Identity Column to an Existing SQL Server Table with Data?

向现有 SQL Server 表添加标识列

问题:您需要向已包含数据的 SQL Server 表添加标识列。 不支持直接更改现有列以成为身份。

解决方案:有两种方法可以实现此目的:

方法一:新建表

此方法保留现有数据。 使用标识列创建一个新表,复制数据,并替换旧表。

T-SQL:

<code class="language-sql">CREATE TABLE dbo.Tmp_Names (
    Id INT NOT NULL IDENTITY(1, 1),
    Name VARCHAR(50) NULL
) ON [PRIMARY]
GO

SET IDENTITY_INSERT dbo.Tmp_Names ON
GO

IF EXISTS (SELECT * FROM dbo.Names)
    INSERT INTO dbo.Tmp_Names (Id, Name)
    SELECT Id, Name FROM dbo.Names TABLOCKX
GO

SET IDENTITY_INSERT dbo.Tmp_Names OFF
GO

DROP TABLE dbo.Names
GO

EXEC sp_rename 'Tmp_Names', 'Names'</code>
登录后复制

方法2:添加新的身份列

此方法添加一个新的标识列,删除旧的主键,并重命名新列。 注意:原始主键列中的现有数据将不会被保留。

T-SQL:

<code class="language-sql">ALTER TABLE Names
ADD Id_new INT IDENTITY(1, 1)
GO

ALTER TABLE Names DROP COLUMN ID
GO

EXEC sp_rename 'Names.Id_new', 'ID', 'COLUMN'</code>
登录后复制

重要注意事项:

  • 备份:在执行架构更改之前始终备份数据。
  • 事务:考虑将这些操作包装在事务中以实现原子性。
  • 测试:在将这些更改应用于生产之前,在开发或暂存环境中彻底测试这些更改。
  • 数据丢失:方法 2 会导致原始主键列中的数据丢失。 根据您的数据需求选择合适的方法。

这些信息对原文提供了更加简洁和精简的解释,同时保留了核心含义并保留了图像。

以上是如何向现有的包含数据的 SQL Server 表添加标识列?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板