Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2305 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  probleme requete Sql sur update clef primaire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme requete Sql sur update clef primaire

n°1887156
suethi
Posté le 23-05-2009 à 10:22:22  profilanswer
 


Bonjour,
 
Je développe en C# avec une BDD Oracle XE. Je souhaiterai mettre à jour des données d'une table (reserver). Cette table possède une clef primaire (pk_reserver) qui comporte 4 champs. Lorsque je veux mettre à jour la clef primaire, j'ai cette erreur:
 
ORA-00001: violation de contrainte unique (GESTION_TENNIS.PK_RESERVER)
 
 
Voici ma requete:
 
UPDATE réserver SET numTerrainRéserver = '24', dateRéserver = '19/06/09', heureRéserver = 10 WHERE numAdhérentRéserver = 24;
 
Dans cette requete je peux mettre à jour (numTerrainRéserver , dateRéserver, heureRéserver), ces 3 champs font partie de la clef primaire de reserver. L'autre champs qui compose la clef primaire est:numAdhérentRéserver
 
 
Merci pour votre aide
 

mood
Publicité
Posté le 23-05-2009 à 10:22:22  profilanswer
 

n°1887162
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 23-05-2009 à 11:11:30  profilanswer
 

suethi a écrit :

 

Dans cette requete je peux mettre à jour (numTerrainRéserver , dateRéserver, heureRéserver), ces 3 champs font partie de la clef primaire de reserver. L'autre champs qui compose la clef primaire est:numAdhérentRéserver


Euh.... 4 champs qui composent une clé primaire ???
Une clé primaire est en général composée d'un seul champ, qui permet d'identifier l'enregistrement de façon unique. La plupart du temps il s'agit d'un id numérique autoincrémenté. Pourquoi diable as tu 4 clés primaires ??
Si tu as une violation de contrainte unique, ça veut dire que tu as déjà un enregistrement dont ces 4 champs sont identiques à celui que tu essaies d'insérer.

 

edit: grilled, ça m'apprendra à mettre 3 plombes pour rédiger un post


Message édité par Harkonnen le 23-05-2009 à 11:12:04

---------------
J'ai un string dans l'array (Paris Hilton)
n°1887171
suethi
Posté le 23-05-2009 à 11:42:54  profilanswer
 

je n'ai pas 4 clef primaire, c'est la concaténation des 4 champs qui font une clef primaire. Lorsque tu réprésentes cette table en MCD, c'est une association porteuse de donnée.

n°1887249
suethi
Posté le 23-05-2009 à 22:53:29  profilanswer
 

Non, il n'existe pas l'enregistrement. C'est cela qui me semble bizarre. Est ce un rapport avec les clef étrangère. Tous ces champs sont des clefs étrangère.


Message édité par suethi le 23-05-2009 à 22:54:16
n°1887252
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 23-05-2009 à 23:20:05  profilanswer
 

Bon, ce sont des clés primaires ou des clés étrangères ? J'ai un peu l'impression que tu te mélanges les pédales là...
Je veux bien croire qu'Oracle soit une grosse merde, mais de là à balancer une 00001 pour rien, ça je ne l'ai jamais vu de sa part.
Donc vérifie que les champs référencés par ta contrainte d'unicité PK_RESERVER n'existent pas déjà dans ta table. C'est la seule et unique raison de son déclenchement.


Message édité par Harkonnen le 23-05-2009 à 23:20:21

---------------
J'ai un string dans l'array (Paris Hilton)
n°1887254
suethi
Posté le 23-05-2009 à 23:41:07  profilanswer
 

mais non, je n'ai pas le même enregistrement, c'est cela qui est dingue.

n°1887271
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-05-2009 à 01:16:18  profilanswer
 


+1


---------------
J'ai un string dans l'array (Paris Hilton)
n°1887292
suethi
Posté le 24-05-2009 à 09:13:38  profilanswer
 

ok mais si un autre adhérent réserve le même terrain à la même heure, il pourra être inséré dans la bdd. Donc il y a un problème. C'est pour cela que j'ai créé cette clef primaire (numTerrainRéserver , numAdhérentRéserver, dateRéserver, heureRéserver).
 
 
voici ma création table:
 
CREATE TABLE  "RÉSERVER"  
   ( "NUMTERRAINRÉSERVER" NUMBER(*,0) NOT NULL ENABLE,  
 "NUMADHÉRENTRÉSERVER" NUMBER(*,0) NOT NULL ENABLE,  
 "DATERÉSERVER" DATE NOT NULL ENABLE,  
 "HEURERÉSERVER" NUMBER NOT NULL ENABLE,  
  CONSTRAINT "PK_RESERVER" PRIMARY KEY ("NUMTERRAINRÉSERVER", "NUMADHÉRENTRÉSERVER", "DATERÉSERVER", "HEURERÉSERVER" ) ENABLE,  
  CONSTRAINT "FK_3" FOREIGN KEY ("NUMTERRAINRÉSERVER" )
   REFERENCES  "TERRAINS" ("NUMTERRAIN" ) ENABLE,  
  CONSTRAINT "FK_4" FOREIGN KEY ("NUMADHÉRENTRÉSERVER" )
   REFERENCES  "ADHÉRENTS" ("NUMADHÉRENT" ) ENABLE
   )
 
 
voici mon code C#:
 
 public static void update_resa(string numAdherent, string numTerrain, string date, string heure)
        {
            MessageBox.Show(heure);
            reqSql = "UPDATE réserver SET numTerrainRéserver = '" + numTerrain + "', dateRéserver = '" + date + "', heureRéserver = '" + heure + "' WHERE numAdhérentRéserver = '" + numAdherent + "'";
            command = new OracleCommand(reqSql, connect);
            command.CommandType = CommandType.Text;
            command.ExecuteNonQuery();
        }
 
 
merci pour votre aide


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  probleme requete Sql sur update clef primaire

 

Sujets relatifs
[SQL] alias de subquery avec Oracle[java] Soucis de requête SELECT avec une date
Problème PHP (formulaire e-mail)probleme delphi 7 et mysql 5.0.51b
probleme delphi 7 et mysql 5.0.51brequete trop lente
probleme avec creation d'un player flvProblème d'inclusion de psapi.h dans une bibliothèque
Probleme avec interface graphique TkinterAffichage des doublons en SQL
Plus de sujets relatifs à : probleme requete Sql sur update clef primaire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR