Faire un INSERT sur une BD MS SQL en ligne

Lorsque vous devez ajouter un enregistrement dans une base de données existante, vous devez apporter une attention particulière aux identifiants.

En effet, MS SQL ne vous permet pas par défaut de donner la valeur d'un identifiant.

Pour y pervenir, vous devez :

  • Entrer une commande indiquant que vous souhaitez forcer la valeur d'un identifiant;

    ou

  • Laisser le soin à MS SQL de donner la valeur à l'identifiant.

▼Publicité

Ainsi, si vous tentez l'instruction suivante :

MS SQL

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

Forcer la valeur d'un identifiant

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

  • Vous êtes certain que l'identifiant désiré n'est pas déjà utilisé pour cette table dans la BD en ligne.

    et

  • Lors de cette série d'ajustements à la BD, vous utiliserez cet identifiant comme clé étrangère dans une autre table. Vous devez donc être certain de sa valeur pour un enregistrement donné.

Ex :

MS SQL

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

Laisser le soin à MS SQL de donner la valeur de l'identifiant

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 :

MS SQL

INSERT [dbo].[produit] ([produit_code], [produit_nom], [produit_cat_id]) 

   VALUES ('SI.000', 'Chaise longue Siesta', 1)

Merci de partager ! Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponEmail this to someone
Catégories