高效率的資料庫管理取決於組織良好、易於存取的資料。 主鍵對此至關重要,識別列提供了一種為表行分配唯一的順序標識符的簡化方法。 但是,在 SQL 中不可能直接將現有資料列轉換為識別列。 本文概述了向現有表新增標識列的最佳策略。
合併身分資料列的策略
將識別列加入到預先存在的表有兩種主要方法:
建立帶有識別列的新表:
INSERT INTO
語句從原表遷移資料。 新增新的身分欄位:
方法 1:新表方法
此方法保留新識別列中的現有資料值。但是,請記住,原始表已被刪除;細緻的資料備份對於防止遺失至關重要。
<code class="language-sql">CREATE TABLE dbo.Tmp_Names ( Id INT NOT NULL IDENTITY(1, 1), Name VARCHAR(50) NULL ) ON [PRIMARY] SET IDENTITY_INSERT dbo.Tmp_Names ON IF EXISTS (SELECT * FROM dbo.Names) INSERT INTO dbo.Tmp_Names (Id, Name) SELECT Id, Name FROM dbo.Names TABLOCKX SET IDENTITY_INSERT dbo.Tmp_Names OFF DROP TABLE dbo.Names EXEC sp_rename 'Tmp_Names', 'Names'</code>
方法 2:新列方法
這種方法新增了一個新的識別列,而不保留原始列的資料。新列將自動填入連續數字。
<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>
結論
雖然直接變更不可行,但這些方法提供了將識別列整合到現有資料庫結構中的有效解決方案。 選擇最適合您的資料保存需求的方法,並仔細管理資料傳輸過程以確保資料完整性。
以上是如何在 SQL 中為現有表新增識別列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!