问题:您需要向已包含数据的 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>
重要注意事项:
这些信息对原文提供了更加简洁和精简的解释,同时保留了核心含义并保留了图像。
以上是如何向现有的包含数据的 SQL Server 表添加标识列?的详细内容。更多信息请关注PHP中文网其他相关文章!