Récupéré Auto-incrément après insert SqlDataSource
cs_suzukMan
Messages postés58Date d'inscriptionmercredi 25 avril 2007StatutMembreDernière intervention13 septembre 2012
-
15 avril 2010 à 09:14
cs_suzukMan
Messages postés58Date d'inscriptionmercredi 25 avril 2007StatutMembreDernière intervention13 septembre 2012
-
16 avril 2010 à 09:41
Bonjour,
Voici mon problème:
J'ajoute un ou plusieurs contact pour un fournisseur, j'ai donc une SqlDataSource qui gère la sélection et l'insertion dans la table (association) contact_fournisseur et
une SqlDataSource qui gère l'insertion et la modification d'un contact (table contact).
Mais lorsque que j'ajoute un contact (avec id auto-incrément) je ne sais pas comment récupérer cet identifiant sans faire une une nouvelle requête sur la BD et puis si deux requête se produisent simultanément, avec cette manière, je ne peux pas garantir la bonne conformité de l'identifiant avec SELECT MAX(id) OU SELECT @@identity.
pierrehenri56
Messages postés63Date d'inscriptionmardi 4 décembre 2007StatutMembreDernière intervention29 octobre 20131 15 avril 2010 à 14:46
Bonjour,
oui il est tout à fait possible de récupérer l'identifiant sur une colonne auto-incrémentée.
Tout d'abord il ne faut surtout pas utiliser le MAX(ID) car si deux utilisateurs exécute la requête en même temps, ce n'est pas sûre que tu récupère ton bon ID.
Il faut donc utilisé le SELECT @@identity, qui te renverra l'identifiant de la ligne que tu viens de créer.
Voici un exemple très simplifié :
SqlConnection connect = new SqlConnection("Ta connectionString");
connect.Open();
SqlCommand cmd = new SqlCommand("INSERT INTO TaTable (COL1) VALUES ('TOTO'); SELECT @@IDENTITY as ID");
cmd.Connection = connect;
object newId = cmd.ExecuteScalar();
connect.Close();
cs_suzukMan
Messages postés58Date d'inscriptionmercredi 25 avril 2007StatutMembreDernière intervention13 septembre 20121 16 avril 2010 à 09:41
Bonjour,
Je connais cette méthode mais ce que je voulais savoir c'est si on pouvait récupérer cette id sans faire un aller /retour base de données mais en cherchant dans la SqlDataSource que je j'utilise pour faire l'insert.