首頁 > 資料庫 > mysql教程 > 如何在現有的包含資料的 SQL Server 資料表中新增識別列?

如何在現有的包含資料的 SQL Server 資料表中新增識別列?

Patricia Arquette
發布: 2025-01-22 23:01:11
原創
436 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板