Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie aktualisiere ich die Identitätsspalte in SQL Server?

Sie können die Identitätsspalte nicht aktualisieren.

SQL Server erlaubt es nicht, die Identitätsspalte zu aktualisieren, im Gegensatz zu anderen Spalten mit einer Update-Anweisung.

Obwohl es einige Alternativen gibt, um eine ähnliche Anforderung zu erfüllen.

  • Wenn der Identitätsspaltenwert für neue Datensätze aktualisiert werden muss

Verwenden Sie DBCC CHECKIDENT , das den aktuellen Identitätswert für die Tabelle prüft und bei Bedarf den Identitätswert ändert.

DBCC CHECKIDENT('tableName', RESEED, NEW_RESEED_VALUE)
  • Wenn der Identitätsspaltenwert für vorhandene Datensätze aktualisiert werden muss

Verwenden Sie IDENTITY_INSERT , wodurch explizite Werte in die Identitätsspalte einer Tabelle eingefügt werden können.

SET IDENTITY_INSERT YourTable {ON|OFF}

Beispiel:

-- Set Identity insert on so that value can be inserted into this column
SET IDENTITY_INSERT YourTable ON
GO
-- Insert the record which you want to update with new value in the identity column
INSERT INTO YourTable(IdentityCol, otherCol) VALUES(13,'myValue')
GO
-- Delete the old row of which you have inserted a copy (above) (make sure about FK's)
DELETE FROM YourTable WHERE ID=3
GO
--Now set the idenetity_insert OFF to back to the previous track
SET IDENTITY_INSERT YourTable OFF