yahou29
Messages postés44Date d'inscriptionlundi 7 avril 2008StatutMembreDernière intervention24 janvier 2010
-
30 avril 2008 à 19:39
yahou29
Messages postés44Date d'inscriptionlundi 7 avril 2008StatutMembreDernière intervention24 janvier 2010
-
1 mai 2008 à 11:55
Bonjour à tous,
Je suis depuis 2 jour sur un simple requete qui ne fonctionne pas...
Message d'erreur :
Violation de la contrainte PRIMARY KEY 'PK_ELEVE'. Impossible d'insérer une clé en double dans l'objet 'dbo.ELEVE'.
L'instruction a été arrêtée.
La PK est ELV_NUM .
Elle est automatiquement ajoutée au formulaire via un requete SELECT , donc pas de double.
Une bonne nouvelle quand même l'insert fonctionne puisque le nouveau tuple apparait dans ma table de la BDD.
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 1 mai 2008 à 00:34
Salut,
La requête est executée 2 fois :
dacmd = new SqlDataAdapter(cmd); // hu ? la requête INSERT en tant que commande Select ?
...
dacmd.Fill(dscmd); // Première execution
cmd.ExecuteNonQuery(); // Seconde execution avec le même ID
Sinon à part ça, une base de donnée est un environnement à fort accès concurent, ta méthode de génération de l'identifiant unique est vouée à l'échec : tu ne peux pas ici garantir que personne ne va commencer la création d'un élève entre le moment où le premier utilisateur obtient l'ID de l'élève suivant et le moment où il execute la requête INSERT (surtout vu la façon dont tu l'obtient à l'ouverture du formulaire).
La définition d'IDENTITY sur la colonne serait peut être plus judicieux, ou a défaut voir pour une génération plus sécurisée de l'ID.