Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment mettre à jour la colonne d'identité dans SQL Server ?

Vous ne pouvez pas mettre à jour la colonne d'identité.

SQL Server ne permet pas de mettre à jour la colonne d'identité contrairement à ce que vous pouvez faire avec d'autres colonnes avec une instruction de mise à jour.

Bien qu'il existe des alternatives pour atteindre un type d'exigence similaire.

  • Lorsque la valeur de la colonne Identité doit être mise à jour pour les nouveaux enregistrements

Utilisez DBCC CHECKIDENT qui vérifie la valeur d'identité actuelle de la table et, si nécessaire, modifie la valeur d'identité.

DBCC CHECKIDENT('tableName', RESEED, NEW_RESEED_VALUE)
  • Lorsque la valeur de la colonne Identité doit être mise à jour pour les enregistrements existants

Utilisez IDENTITY_INSERT qui permet d'insérer des valeurs explicites dans la colonne d'identité d'une table.

SET IDENTITY_INSERT YourTable {ON|OFF}

Exemple :

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