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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Oracle] Problème d'insertion dans une table

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Oracle] Problème d'insertion dans une table

n°730339
mister_fx
Posté le 18-05-2004 à 14:47:22  profilanswer
 

Bonjour,
 
Désolé ma question est peu etre stupide mais bon je n'ai pas peur du ridicule alors alons y:
 
Donc je voudrai inserer des données dans la table formation.  
Voici sa structure:  
 
create table FORMATION (  
MATRICULE CHAR(10) not null,  
NUM_FORM INTEGER not null,  
"DATE" DATE,  
TITRE VARCHAR2(50),  
HEURE INTEGER,  
constraint PK_FORMATION primary key (NUM_FORM),  
constraint FK_FORMATIO_PERS_FORM_PERSONNE foreign key (MATRICULE)  
references PERSONNE (MATRICULE)  
)  
 
Donc voici un petit exemple d'insertion :  
 
INSERT INTO FORMATION VALUES ('aaaaaaaaaa',1,'01-01-01','math',10);  
INSERT INTO FORMATION VALUES ('aaaaaaaaaa',2,'01-01-01','info',20);  
INSERT INTO FORMATION VALUES ('aaaaaaaaaa',3,'01-01-01','angl',30);  
INSERT INTO FORMATION VALUES ('aaaaaaaaaa',4,'01-01-01','ita',40);  
 
INSERT INTO FORMATION VALUES ('bbbbbbbbbb',1,'01-01-01','math',10);  
INSERT INTO FORMATION VALUES ('bbbbbbbbbb',2,'01-01-01','info',20);  
INSERT INTO FORMATION VALUES ('bbbbbbbbbb',3,'01-01-01','angl',30);  
INSERT INTO FORMATION VALUES ('bbbbbbbbbb',4,'01-01-01','ita',40);  
 
La première serie d'insertion fonctionne, mais la deuxième serie ne veux pas et j'ai le droit une erreur du genre:  
 
INSERT INTO FORMATION VALUES ('bbbbbbbbbb',1,'01-01-01','math',10)  
*  
ERROR at line 1:  
ORA-00001: unique constraint (HR.PK_FORMATION) violated  
 
en gros une formation est défini par son matricule, qui proviens de la clef primaire de la table PERSONNE, et son numéro de formation que j'ai défini en tant que clef primaire (par exemple le numéro de formation est 1 pour sa première formation , 2 pour sa seconde etc...)
Donc faut il que je redefinisse ma table formation, ou y a t'il un autre moyen pour que je puisse inserer c'est données.
 
Merci beaucoup

mood
Publicité
Posté le 18-05-2004 à 14:47:22  profilanswer
 

n°730347
vespertini​an
Posté le 18-05-2004 à 14:56:23  profilanswer
 

La deuxième insertion ne peut se faire parce que les clés primaires sont déjà utilisées et une clé primaire est unique par définition, ta clé primaire étant NUM_FORM. En effet, tu insère une première série de tuples de clé primaire de 1 à 4, et tu recommence avec les meme clés primaire >> erreur de contrainte unique
 
Dans un contexte de shema normalisé, il te faudrait une table PERSONNES, une TABLE FORMATIONS, qui contiendrait les informations pour différents types de formations, et une troisième table, PERS_FORM par exemple, qui relierait des personne à des formations.


Message édité par vespertinian le 18-05-2004 à 14:59:13
n°730349
vttman2
Je suis Open ...
Posté le 18-05-2004 à 14:57:45  profilanswer
 

Essaie ça  
1)commence par supprimer ta table Formation  
nouvellement créé
=>
drop table formation
 
2) Recrée ta table avec la clé primaire
formée des 2 champs Matricule et num_form  
=>
create table FORMATION (  
MATRICULE CHAR(10) not null,  
NUM_FORM INTEGER not null,  
"DATE" DATE,  
TITRE VARCHAR2(50),  
HEURE INTEGER,  
constraint PK_FORMATION primary key (MATRICULE ,NUM_FORM),  
constraint FK_FORMATIO_PERS_FORM_PERSONNE foreign key (MATRICULE)  
references PERSONNE (MATRICULE)  
)  

n°730354
mister_fx
Posté le 18-05-2004 à 15:05:31  profilanswer
 

Merci a tous de m'avoir aider,
et merci beaucoup vttman2, ca marche a merveille ta foncion

n°730407
vttman2
Je suis Open ...
Posté le 18-05-2004 à 15:40:05  profilanswer
 

Certes mais le + propre aurait été de créer  
3 tables comme indiqué dans le message
de vespertinian ...

n°730430
mister_fx
Posté le 18-05-2004 à 15:59:15  profilanswer
 

Le problème est que num_form ne correspond pas un type de formation mais à un numéro de formation, c'est a dire une personne peut avoir de 0 à n formation, et chacunes de ses formations est classé par ordre de formation (donc de 0 à n ou plutôt de 1 à n).
Donc la formation 1 du matricule 'aaaaaaaaaa' n'est pas la même que la formation 1 du matricule 'bbbbbbbbbb'.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Oracle] Problème d'insertion dans une table

 

Sujets relatifs
Modifier le commentaire d'une table MySQLProbleme avec ie, affichage de footer
[C] Probleme d'allocation[VB6] probleme pour lire un fichier avec Open
[php] arrive pas a afficher le contenu d'une table SQL [nb inside][JS] Étrange problème de soustraction
ENORME PROBLEMEConfiguration Base Oracle
Probleme compatibilité windows/linuxProbleme jtabbedpane et canvas3d
Plus de sujets relatifs à : [Oracle] Problème d'insertion dans une table


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