Clé étrangere sous oracle
Résolu/Fermé
A voir également:
- Clé étrangère oracle
- Clé windows 10 gratuit - Guide
- Clé usb non détectée - Guide
- Clé bootable windows 10 - Guide
- Clé usb 2to vrai ou faux - Accueil - Stockage
- Cle hdmi tv - Guide
2 réponses
jee pee
Messages postés
40579
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
21 décembre 2024
9 460
13 avril 2008 à 14:23
13 avril 2008 à 14:23
bonjour,
normalement la syntaxe serait :
CREATE table Associer
( IdActivité Integer NOT NULL,
IdTypeAct Integer NOT NULL,
CONSTRAINT PK_Ass PRIMARY KEY (IdActivité,IdTypeAct) ,
CONSTRAINT FK_LIG FOREIGN KEY (NoLig) REFERENCES ligue (NoLig) ,
CONSTRAINT FK_XXX FOREIGN KEY (NoXxx) REFERENCES Xxx (NoXxx)
);
il faut au moment de la creation que la/les table/s référencées existent
cdt
normalement la syntaxe serait :
CREATE table Associer
( IdActivité Integer NOT NULL,
IdTypeAct Integer NOT NULL,
CONSTRAINT PK_Ass PRIMARY KEY (IdActivité,IdTypeAct) ,
CONSTRAINT FK_LIG FOREIGN KEY (NoLig) REFERENCES ligue (NoLig) ,
CONSTRAINT FK_XXX FOREIGN KEY (NoXxx) REFERENCES Xxx (NoXxx)
);
il faut au moment de la creation que la/les table/s référencées existent
cdt
jee pee
Messages postés
40579
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
21 décembre 2024
9 460
14 avril 2008 à 20:54
14 avril 2008 à 20:54
c'est prévu aussi sous oracle :
Prenons l'exemple d'une table "Article" tout ce qu'il y a de plus classique : Une clé (PK) une référence un libellé un prix La clé primaire est renseignée à l'aide d'une séquence. CREATE Table Article ( Id Number (10), Refe VARCHAR2 (16), Libe VARCHAR2 (64), Prix NUMBER (12,2)); CREATE SEQUENCE Seq_Id_Article START WITH 1 INCREMENT BY 1; INSERT INTO Article VALUES (Seq_Id_Article.NextVal, '001', 'Marteau', 7.46); INSERT INTO Article VALUES (Seq_Id_Article.NextVal, '002', 'Tournevis', 3.83); INSERT INTO Article VALUES (Seq_Id_Article.NextVal, '004', 'Lime', 5.09); COMMIT;exemple tiré d'une site qui fait référence et que tu devrais garder dans tes tablettes : https://oracle.developpez.com/cours/
Oui, en effet j'avais plus ou moins lu ça mais je pensais pas que ca pouvait être utile dans mon cas, je m'explique :
C'est une application access avec une BDD sous oracle avec un lien ODBC.
Du coup, le "Seq_xxxxxx.NextVal", je ne sais pas ou le mettre pour que dans les formulaires sous access, tout soit fait automatiquement... :/
Si tu as une idée, je suis preneur :)
A+
C'est une application access avec une BDD sous oracle avec un lien ODBC.
Du coup, le "Seq_xxxxxx.NextVal", je ne sais pas ou le mettre pour que dans les formulaires sous access, tout soit fait automatiquement... :/
Si tu as une idée, je suis preneur :)
A+
jee pee
Messages postés
40579
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
21 décembre 2024
9 460
>
Low
14 avril 2008 à 21:59
14 avril 2008 à 21:59
dans ton insert, le seq_xxx.nextval, c'est un champ fixe en "dur" comme si tu mettais 'ABC'
ou tu peux faire avant un select pour le récupérer dans une variable :
select seq_xxx.netval from sys.dual;
ou tu peux faire avant un select pour le récupérer dans une variable :
select seq_xxx.netval from sys.dual;
Low
>
jee pee
Messages postés
40579
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
21 décembre 2024
14 avril 2008 à 22:04
14 avril 2008 à 22:04
Access, c'est spéicla, j'ai pas de insert si tu veux dans mon code VBA, donc impossible de le mettre en dur...
Je vais tenter un truc à base de select comme tu proposes :)
Je vais tenter un truc à base de select comme tu proposes :)
Low
>
jee pee
Messages postés
40579
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
21 décembre 2024
14 avril 2008 à 22:23
14 avril 2008 à 22:23
Bon, il n'y a aucun moyen avec le select, enfin je sais pas comment expliquer mais c'est pas possible :D
Faut que je trouve une autre solution...
On ne peut pas mettre la séquence incrémenté dans le type de donnée, sur la table créé sous oracle ?
Faut que je trouve une autre solution...
On ne peut pas mettre la séquence incrémenté dans le type de donnée, sur la table créé sous oracle ?
jee pee
Messages postés
40579
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
21 décembre 2024
9 460
>
Low
14 avril 2008 à 22:31
14 avril 2008 à 22:31
non je crois que le nextval n'est pas autorisé en default value sur une colonne du create table
et comme je ne connais pas du tout access je ne peux pas d'aider plus
et comme je ne connais pas du tout access je ne peux pas d'aider plus
13 avril 2008 à 19:44
Je vais essayer comme ça, mais il me semble que j'avais déjà essayé et qu'il me sortait alors un message d'erreur genre "Il ne peut pas y avoir plus d'une clé étrangère" ou je ne sais plus trop exactement...
Je te tiens au courant.
13 avril 2008 à 19:51
cela s'écrit normalement :
CONSTRAINT FK_LIG FOREIGN KEY (NoLig,NoXXX) REFERENCES ligue (NoLig,NoXXX)
13 avril 2008 à 20:43
Je test ça demain et je te tiens au courant :)
Encore merci.
13 avril 2008 à 20:55
14 avril 2008 à 20:45
Ça marche impec, merci des conseils et de tes réponses :)
J'en profite pour te poser une autre question, vu que tu as l'air de t'y connaitre sous oracle :
- Est ce que tu sais comment faire une incrémentation automatique d'une clé primaire sur une table ?
Par exemple, sous access, ça se fait facilement sur les clés primaires...je sais pas si je t'explique bien, en gros :
Imaginons une table Activité :
IdActivité
NomActivité
Je n'aurais pas besoin de m'occuper de IdActivité, car celui ci serait incrémenter tout seul (de 0 à l'infini ...) et donc j'aurais juste à m'occuper de NomActivité. Est ce que tu vois ce que je veux faire ?
Merci d''avoir pris le temps de me lire !