SQL Server IDENTITY_INSERT permet d’insérer des valeurs explicites dans la colonne identité d’une table.
L’instruction IDENTITY_INSERT doit être définie sur pour insérer une valeur explicite pour la colonne identity. Par défaut IDENTITY_INSERT est désactivé.
SYNTAXE
SET IDENTITY_INSERT schema_name . ] table_name { ON | OFF }
database_name
Est le nom de la base de données dans la table existe.
schema_name
Est le nom du schéma auquel appartient la table.,
table_name
Est le nom d’une table avec une colonne d’identité.
regardons un exemple de SET IDENTITY_INSERT dans SQL SERVER.
l’exemple suivant montre comment IDENTITY_INSERT est utilisé pour donner une valeur d’identité explicitement pour la colonne identity.
Nous créons une table-X qui a un ID de colonne d’identité. Vérifions si nous essayons de passer une valeur explicite pour identity column ID.,
CREATE TABLE X (ID INT IDENTITY(1,1) ) ;INSERT INTO X (ID) VALUES (1);
Comme nous le voyons, cela donne une erreur d’une valeur explicite pour la colonne d’identité dans la table X et suggère également que si nous voulons insérer une valeur explicite pour la colonne d’identité, IDENTITY_INSERT doit être activé.
maintenant, nous essayons d’exécuter à nouveau l’instruction ci-dessus après avoir défini IDENTITY_INSERT sur .
SET IDENTITY_INSERT dbo.X ONINSERT INTO X (ID) VALUES (1);SET IDENTITY_INSERT dbo.X OFF
Comme nous le voyons , explicite la valeur d’une colonne d’identité est inséré dans la table.,
dans l’instruction ci-dessus , nous devons spécifier la liste des colonnes lors de l’insertion sinon elle n’autorisera pas de valeur explicite pour la colonne identité et lancera une erreur.
Comme nous le voyons dans l’instruction suivante même après IDENTITY_INSERT ON , cela donne toujours une erreur de valeurs explicites pour la colonne identité car nous devons spécifier le nom de la colonne pendant l’insertion.