[Oracle] problème d'insertion dans une table
Fermé
Yeah
-
18 mai 2004 à 14:30
ludvo Messages postés 65 Date d'inscription mardi 5 mars 2002 Statut Membre Dernière intervention 5 août 2004 - 18 mai 2004 à 16:31
ludvo Messages postés 65 Date d'inscription mardi 5 mars 2002 Statut Membre Dernière intervention 5 août 2004 - 18 mai 2004 à 16:31
A voir également:
- [Oracle] problème d'insertion dans une table
- Table ascii - Guide
- Table des matières word - Guide
- Insertion liste déroulante excel - Guide
- Insertion signature word - Guide
- Insertion filigrane word - Guide
4 réponses
ludvo
Messages postés
65
Date d'inscription
mardi 5 mars 2002
Statut
Membre
Dernière intervention
5 août 2004
7
18 mai 2004 à 14:50
18 mai 2004 à 14:50
En fait, dans ta 2eme serie tu utilises les meme cles primaires que la 1ere :
la cle primaire de aaaaaaaa et bbbbbbbb est 1. Sachant qu'une cle primaire est par definition unique (d'ou "unique constraint") et bien il rale. Commence ta 2eme serie par 5 :)
D'ailleurs, il est de coutume de mettre la clé primaire en 1er : 1, 'aaaaaaa' (...)
pour eviter justement ces erreurs et pour avoir une meilleure vision du caractere unique de la ligne
voila
Y a rien de plus con qu'un ordinateur.
Louis Schuffenecker
INSERT INTO FORMATION VALUES ('aaaaaaaaaa',1,'01-01-01','math',10); INSERT INTO FORMATION VALUES ('bbbbbbbbbb',1,'01-01-01','math',10);
la cle primaire de aaaaaaaa et bbbbbbbb est 1. Sachant qu'une cle primaire est par definition unique (d'ou "unique constraint") et bien il rale. Commence ta 2eme serie par 5 :)
D'ailleurs, il est de coutume de mettre la clé primaire en 1er : 1, 'aaaaaaa' (...)
pour eviter justement ces erreurs et pour avoir une meilleure vision du caractere unique de la ligne
voila
Y a rien de plus con qu'un ordinateur.
Louis Schuffenecker
C bon j'ai reussit a avoir la modification de la table
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)
)
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)
)
ludvo
Messages postés
65
Date d'inscription
mardi 5 mars 2002
Statut
Membre
Dernière intervention
5 août 2004
7
18 mai 2004 à 15:18
18 mai 2004 à 15:18
Ca marche parfaitement bien. Tu as juste confondu le matricule de la personne et le numero de formation dans tes requetes d'insertion.
Si tu remettais tout en ordre :
Là il y 3 matricules pour la formation 1.
Dans ta modification tu sous entend qu'une formation est relative à 1 individu, tu a créé une cle relative entre "formation" et "personne" c'est à dire qu'une personne peut avoir pls formation (qui lui est propre) mais il ne peut y avoir pls personnes dans cette formation.
Ton code etait bon, tu as juste mal ordonné tes colonnes.
:)
Y a rien de plus con qu'un ordinateur.
Louis Schuffenecker
Si tu remettais tout en ordre :
INSERT INTO FORMATION VALUES (1,'aaaaaaaaaa','01-01-01','math',10); INSERT INTO FORMATION VALUES (1,'bbbbbbbbbb','01-01-01','math',10); INSERT INTO FORMATION VALUES (1,'cccccccccc','01-01-01','math',10);
Là il y 3 matricules pour la formation 1.
Dans ta modification tu sous entend qu'une formation est relative à 1 individu, tu a créé une cle relative entre "formation" et "personne" c'est à dire qu'une personne peut avoir pls formation (qui lui est propre) mais il ne peut y avoir pls personnes dans cette formation.
Ton code etait bon, tu as juste mal ordonné tes colonnes.
:)
Y a rien de plus con qu'un ordinateur.
Louis Schuffenecker
Tout ca est vraiment subtil,
Par contre dans ma table le numéro de formation ne correspond pas à un type de formation mais à son numéro de formation.
Par exemple si le matricule 'aaaaaaaaaa' donne sa premiere formation alors on la stoque dans num_form=1, pour sa deuxième ca sera num_form=2 ect....
Cela change t'il quelque chose ?
Par contre dans ma table le numéro de formation ne correspond pas à un type de formation mais à son numéro de formation.
Par exemple si le matricule 'aaaaaaaaaa' donne sa premiere formation alors on la stoque dans num_form=1, pour sa deuxième ca sera num_form=2 ect....
Cela change t'il quelque chose ?
ludvo
Messages postés
65
Date d'inscription
mardi 5 mars 2002
Statut
Membre
Dernière intervention
5 août 2004
7
>
Yeah
18 mai 2004 à 15:39
18 mai 2004 à 15:39
En fait on va faire plus simple pour etre sur de te donner une bonne reponse. Peux tu me donner ton association entre ces 2 tables (ton mld) ou une phrase. Car je ne sais pas si c'est ta personne qui peut effectuer pls formation, ou qu'1 formation peut correspondre à pls personnes, qu'il peut y avoir pls formations par personnes et qu'une formation peut faire participer pls personnes.....
Il y a du choix :)
Y a rien de plus con qu'un ordinateur.
Louis Schuffenecker
Il y a du choix :)
Y a rien de plus con qu'un ordinateur.
Louis Schuffenecker
En gros une personne est defini avec un matricule unique;
Une personne peut effectuer de 0 à n formation;
Toutes les formations qu'il effectue son classé par numéro de formation(donc de 0 à n ou plutôt 1 à n);
Donc la formation 1 du matricule 'aaaaaaaaaa' n'est pas forcément la même la formation 1 du matricule 'bbbbbbbbbb', c'est juste que c'est sa première formation;
Voila, voila j'espere que j'ai été suffisament clair
Une personne peut effectuer de 0 à n formation;
Toutes les formations qu'il effectue son classé par numéro de formation(donc de 0 à n ou plutôt 1 à n);
Donc la formation 1 du matricule 'aaaaaaaaaa' n'est pas forcément la même la formation 1 du matricule 'bbbbbbbbbb', c'est juste que c'est sa première formation;
Voila, voila j'espere que j'ai été suffisament clair
ludvo
Messages postés
65
Date d'inscription
mardi 5 mars 2002
Statut
Membre
Dernière intervention
5 août 2004
7
18 mai 2004 à 16:03
18 mai 2004 à 16:03
Ok, donc c'est bien une clé relative que tu veux faire : une formation depend uniquement d'une personne, son numero est unique pour cette personne. Donc plusieurs personnes ne peuvent pas faire la meme formation et pls formation peuvent avoir le meme identifiant.
Alors, oui maintenant ton code est bon car la cle primaire de la formation doit dependre de l'identifiant de celle-ci + la cle primaire de la personne.
Donc ca marche pour ce que tu veux faire :) Mais vraiment je te conseillerais de placer la colonne "num_form" avant "matricule" si tu veux avoir des requetes de selection propres.
Y a rien de plus con qu'un ordinateur.
Louis Schuffenecker
Alors, oui maintenant ton code est bon car la cle primaire de la formation doit dependre de l'identifiant de celle-ci + la cle primaire de la personne.
Donc ca marche pour ce que tu veux faire :) Mais vraiment je te conseillerais de placer la colonne "num_form" avant "matricule" si tu veux avoir des requetes de selection propres.
Y a rien de plus con qu'un ordinateur.
Louis Schuffenecker
Yeah
>
ludvo
Messages postés
65
Date d'inscription
mardi 5 mars 2002
Statut
Membre
Dernière intervention
5 août 2004
18 mai 2004 à 16:10
18 mai 2004 à 16:10
Ok,
Je te remercie vraiment pour avoir passer du temps à m'aider, ca fait pas longtemps que j'utilise les forum mais c'est vraiment instructif et efficace.
Merci Ludvo
Je te remercie vraiment pour avoir passer du temps à m'aider, ca fait pas longtemps que j'utilise les forum mais c'est vraiment instructif et efficace.
Merci Ludvo
ludvo
Messages postés
65
Date d'inscription
mardi 5 mars 2002
Statut
Membre
Dernière intervention
5 août 2004
7
>
Yeah
18 mai 2004 à 16:31
18 mai 2004 à 16:31
De rien, on est là pour ca ;-)
Bon courage
Y a rien de plus con qu'un ordinateur.
Louis Schuffenecker
Bon courage
Y a rien de plus con qu'un ordinateur.
Louis Schuffenecker
18 mai 2004 à 14:56
oui, mais comment je dois definir alors ma table, puisque je veux pouvoir acceder a cette table par le matricule et le numéro de formation.
Par exemple SELECT MATRICULE FROM FORMATION WHERE NUM_FORM=1
car pour un matricule donné je veux qu'il y ai plusieur formation
Merci