向现有 SQL Server 列添加标识:两种方法
直接向 SQL Server 中的现有列添加标识属性并不是一项简单的任务。 本文概述了实现此目的的两种方法,每种方法都有自己的权衡:
方法1:创建带有Identity的新表
此方法保留现有数据。
<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:添加新的身份列并替换旧的
此方法不会保留新身份列中的现有数据。
<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>
重要注意事项:
请记住在实现任一方法之前解决链接到原始主键列的任何外键约束。 否则将导致数据库错误。
有关更多详细信息和故障排除,请参阅此 Microsoft SQL Server 论坛主题:
https://www.php.cn/link/16dd8c942ad630be7e5a12b681b3f5c4
以上是如何向现有 SQL Server 列添加标识属性?的详细内容。更多信息请关注PHP中文网其他相关文章!