高效的数据库管理取决于组织良好、易于访问的数据。 主键对此至关重要,标识列提供了一种为表行分配唯一的顺序标识符的简化方法。 但是,在 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中文网其他相关文章!