SQL Foreign Key
Fermé
osiris89
Messages postés
8
Date d'inscription
vendredi 18 décembre 2009
Statut
Membre
Dernière intervention
24 mars 2010
-
18 déc. 2009 à 17:42
Mopra-L Messages postés 146 Date d'inscription lundi 29 juin 2009 Statut Membre Dernière intervention 23 mai 2012 - 18 déc. 2009 à 20:34
Mopra-L Messages postés 146 Date d'inscription lundi 29 juin 2009 Statut Membre Dernière intervention 23 mai 2012 - 18 déc. 2009 à 20:34
A voir également:
- SQL Foreign Key
- Key windows 10 gratuit - Guide
- Show key plus - Télécharger - Utilitaires
- Joy to key - Télécharger - Émulation & Virtualisation
- Master key - Télécharger - Sécurité
- Volume down key + power key for more than 7 secs traduction - Forum Samsung
5 réponses
Mopra-L
Messages postés
146
Date d'inscription
lundi 29 juin 2009
Statut
Membre
Dernière intervention
23 mai 2012
6
18 déc. 2009 à 17:45
18 déc. 2009 à 17:45
Bonjour,
Je serais tenté de dire que c'est un peu le principe des FOREIGN KEY, elles doivent correspondre forcement a quelque chose :/
Si tu veux mettre ce champ optionnel tout en verifiant que la clé existe, je te conseille plutôt les triggers
Je serais tenté de dire que c'est un peu le principe des FOREIGN KEY, elles doivent correspondre forcement a quelque chose :/
Si tu veux mettre ce champ optionnel tout en verifiant que la clé existe, je te conseille plutôt les triggers
osiris89
Messages postés
8
Date d'inscription
vendredi 18 décembre 2009
Statut
Membre
Dernière intervention
24 mars 2010
18 déc. 2009 à 17:53
18 déc. 2009 à 17:53
Merci à toi pour la réponse si rapide,
Aurais-tu un exemple de triggers qui ferait un peu ce que j'ai de besoin ?
Merci
Aurais-tu un exemple de triggers qui ferait un peu ce que j'ai de besoin ?
Merci
Mopra-L
Messages postés
146
Date d'inscription
lundi 29 juin 2009
Statut
Membre
Dernière intervention
23 mai 2012
6
18 déc. 2009 à 18:05
18 déc. 2009 à 18:05
Hem, la, par contre, non ^^'
Ce n'est pas trop compliqué a faire, voila déjà le début :
CREATE OR REPLACE TRIGGER verif_foreign_key
BEFORE INSERT OR UPDATE ON ta_table
FOR EACH ROW
SELECT * FROM table_de_la_cle_referante WHERE cle_referante = new.ta_foreign_key
Voila, après, faut vérifier si le select rammene des résultats, et si c'est pas le cas, y a pas de correspondance, donc faut générer une erreur
Désolé de pas pouvoir t'aider plus, les triggers sont un peu loin dans ma mémoire, je m'en souviens plus trop ^^'
Ce n'est pas trop compliqué a faire, voila déjà le début :
CREATE OR REPLACE TRIGGER verif_foreign_key
BEFORE INSERT OR UPDATE ON ta_table
FOR EACH ROW
SELECT * FROM table_de_la_cle_referante WHERE cle_referante = new.ta_foreign_key
Voila, après, faut vérifier si le select rammene des résultats, et si c'est pas le cas, y a pas de correspondance, donc faut générer une erreur
Désolé de pas pouvoir t'aider plus, les triggers sont un peu loin dans ma mémoire, je m'en souviens plus trop ^^'
osiris89
Messages postés
8
Date d'inscription
vendredi 18 décembre 2009
Statut
Membre
Dernière intervention
24 mars 2010
18 déc. 2009 à 19:47
18 déc. 2009 à 19:47
Merci de ton aide, mais je n'arrive pas à trouver de l'aide pour compléter le trigger.
Je ne m'y connait pas du tout en trigger ... est-ce que tu as un site ou quelque chose qui pourrait m'aider ?
Merci
Je ne m'y connait pas du tout en trigger ... est-ce que tu as un site ou quelque chose qui pourrait m'aider ?
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Mopra-L
Messages postés
146
Date d'inscription
lundi 29 juin 2009
Statut
Membre
Dernière intervention
23 mai 2012
6
18 déc. 2009 à 20:34
18 déc. 2009 à 20:34
J'ai retrouvé mes cours, je vais peut-être pouvoir t'aider :D
CREATE OR REPLACE TRIGGER verif_foreign_key
BEFORE INSERT OR UPDATE ON ta_table_avec_foreign_key
for each row
DECLARE
cnt NUMBER;
begin
SELECT count(*) into cnt
FROM table_de_la_cle_referante
WHERE cle_referante = :new.ta_foreign_key
if (cnt = 0) then
raise_application_error(-20100,'Cette valeur n'existe pas !');
end if;
end;
Voila, je ne peux evidemment pas la tester, mais ca devrait fonctionner, j'imagine :p
CREATE OR REPLACE TRIGGER verif_foreign_key
BEFORE INSERT OR UPDATE ON ta_table_avec_foreign_key
for each row
DECLARE
cnt NUMBER;
begin
SELECT count(*) into cnt
FROM table_de_la_cle_referante
WHERE cle_referante = :new.ta_foreign_key
if (cnt = 0) then
raise_application_error(-20100,'Cette valeur n'existe pas !');
end if;
end;
Voila, je ne peux evidemment pas la tester, mais ca devrait fonctionner, j'imagine :p