it-swarm.com.de

SQL Server: Wie kann eine neue Identitätsspalte hinzugefügt und die Spalte mit IDs aufgefüllt werden?

Ich habe eine Tabelle mit sehr vielen Daten. Ich möchte eine zusätzliche Spalte id hinzufügen und als Primärschlüssel verwenden. Was ist der bessere Weg, um diese Spalte mit Werten von einem 1 bis row count zu füllen? 

Derzeit verwende ich den Cursor und aktualisiere die Zeilen einzeln. Es dauert Stunden. Gibt es eine Möglichkeit, dies schneller zu tun?

Vielen Dank

47
Sergejs

Mach es einfach so:

ALTER TABLE dbo.YourTable
ADD ID INT IDENTITY(1,1)

und die Spalte wird erstellt und automatisch mit den integer-Werten gefüllt (wie Aaron Bertrand in seinem Kommentar hervorhebt) - Sie haben keine Kontrolle darüber, welche Zeile welchen Wert erhält. Alle Zeilen erhalten jedoch einen gültigen int-Wert - es gibt keine NULL- oder doppelten Werte.

Als nächstes legen Sie es als Primärschlüssel fest:

ALTER TABLE dbo.YourTable
ADD CONSTRAINT PK_YourTable PRIMARY KEY(ID)
110
marc_s

Wenn Sie Zeilennummern in einer bestimmten Reihenfolge hinzufügen möchten, können Sie ROW_NUMBER () in eine neue Tabelle einfügen und dann die ursprüngliche löschen. Abhängig von der Tabellengröße und anderen geschäftlichen Einschränkungen möchten Sie dies jedoch möglicherweise nicht tun. Dies bedeutet auch, dass es eine Logik gibt, nach der die Tabelle sortiert werden soll.

SELECT ROW_NUMBER() OVER (ORDER BY COL1, COL2, COL3, ETC.) AS ID, *
INTO NEW_TABLE
FROM ORIGINAL_TABLE
0
Misa