Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come aggiornare la colonna identità in SQL Server?

Non puoi aggiornare la colonna dell'identità.

SQL Server non consente di aggiornare la colonna Identity a differenza di quanto è possibile fare con altre colonne con un'istruzione di aggiornamento.

Sebbene ci siano alcune alternative per ottenere un simile tipo di requisito.

  • Quando il valore della colonna Identità deve essere aggiornato per nuovi record

Usa DBCC CHECKIDENT che verifica il valore dell'identità corrente per la tabella e, se necessario, modifica il valore dell'identità.

DBCC CHECKIDENT('tableName', RESEED, NEW_RESEED_VALUE)
  • Quando il valore della colonna Identity deve essere aggiornato per i record esistenti

Utilizza IDENTITY_INSERT che consente di inserire valori espliciti nella colonna identità di una tabella.

SET IDENTITY_INSERT YourTable {ON|OFF}

Esempio:

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