Lorsque vous devez ajouter un enregistrement dans une base de données existante, vous devez apporter une attention particulière aux identifiants.
Par défaut, MS SQL ne vous permet pas de donner la valeur d'un identifiant. Si vous tentez l'instruction suivante :
INSERT [dbo].[produit] ([produit_id], [produit_code], [produit_nom], [produit_cat_id])
VALUES (2, 'SI.000', 'Chaise longue Siesta', 1)
Vous obtiendrez le message d'erreur « Cannot insert explicit value for identity column in table 'produit' when IDENTITY_INSERT is set to OFF.»
Pour régler ce problème, vous devez :
ou
Si vous désirez forcer la valeur d'un identifiant, vous devrez utiliser la commande SET IDENTITY avant et après la ou les requêtes INSERT.
Vous utiliserez cette technique dans le cas où :
et
Ex :
SET IDENTITY_INSERT [dbo].[produit] ON
INSERT [dbo].[produit] ([produit_id], [produit_code], [produit_nom], [produit_cat_id])
VALUES (2, 'SI.000', 'Chaise longue Siesta', 1)
...
SET IDENTITY_INSERT [dbo].[produit] OFF
Dans la plupart des cas, vous n'avez pas besoin de forcer la valeur de l'identifiant. Après tout, l'identifiant ne sert qu'à identifier l'enregistrement de façon unique et il est auto-incrémenté alors pourquoi s'en soucier ?
Dans ce cas, on omettra simplement de spécifier l'identifiant dans la requête INSERT. Mais attention : pour que cela fonctionne, l'identifiant doit avoir été configuré pour être auto-incrémenté.
Ex :
INSERT [dbo].[produit] ([produit_code], [produit_nom], [produit_cat_id])
VALUES ('SI.000', 'Chaise longue Siesta', 1)
▼Publicité