Problem: Sie müssen einer SQL Server-Tabelle, die bereits Daten enthält, eine Identitätsspalte hinzufügen. Das direkte Ändern einer vorhandenen Spalte in eine Identität wird nicht unterstützt.
Lösungen:Es gibt zwei Methoden, um dies zu erreichen:
Methode 1: Erstellen Sie eine neue Tabelle
Diese Methode bewahrt vorhandene Daten. Eine neue Tabelle wird mit der Identitätsspalte erstellt, Daten werden kopiert und die alte Tabelle wird ersetzt.
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>
Methode 2: Fügen Sie eine neue Identitätsspalte hinzu
Dieser Ansatz fügt eine neue Identitätsspalte hinzu, entfernt den alten Primärschlüssel und benennt die neue Spalte um. Hinweis: Vorhandene Daten in der ursprünglichen Primärschlüsselspalte werden nicht beibehalten.
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>
Wichtige Überlegungen:
Diese Informationen bieten eine prägnantere und optimierte Erklärung des Originaltextes, während die Kernbedeutung und das Bild erhalten bleiben.
Das obige ist der detaillierte Inhalt vonWie kann ich einer vorhandenen SQL Server-Tabelle mit Daten eine Identitätsspalte hinzufügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!