Heim >Datenbank >MySQL-Tutorial >Wie füge ich einer vorhandenen SQL Server-Spalte eine Identitätseigenschaft hinzu?

Wie füge ich einer vorhandenen SQL Server-Spalte eine Identitätseigenschaft hinzu?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-22 23:22:11928Durchsuche

How to Add an Identity Property to an Existing SQL Server Column?

Hinzufügen einer Identität zu einer vorhandenen SQL Server-Spalte: Zwei Methoden

Das direkte Hinzufügen einer Identitätseigenschaft zu einer vorhandenen Spalte in SQL Server ist keine einfache Aufgabe. In diesem Artikel werden zwei Methoden beschrieben, um dies zu erreichen, jede mit ihren eigenen Kompromissen:

Methode 1: Erstellen einer neuen Tabelle mit Identität

Diese Methode bewahrt vorhandene Daten.

<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: Hinzufügen einer neuen Identitätsspalte und Ersetzen der alten

Bei diesem Ansatz werden nicht vorhandene Daten in der neuen Identitätsspalte beibehalten.

<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:

Denken Sie daran, alle Fremdschlüsseleinschränkungen zu berücksichtigen, die mit der ursprünglichen Primärschlüsselspalte verknüpft sind, bevor Sie eine der beiden Methoden implementieren. Andernfalls kommt es zu Datenbankfehlern.

Ausführlichere Informationen und Fehlerbehebung finden Sie in diesem Microsoft SQL Server-Forenthread:

https://www.php.cn/link/16dd8c942ad630be7e5a12b681b3f5c4

Das obige ist der detaillierte Inhalt vonWie füge ich einer vorhandenen SQL Server-Spalte eine Identitätseigenschaft hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn