SQL Foreign Key
osiris89
Messages postés
8
Statut
Membre
-
Mopra-L Messages postés 150 Statut Membre -
Mopra-L Messages postés 150 Statut Membre -
Bonjour,
Je suis entrain de finaliser une application faite en PHP, HTML, Javascript, AJAX, CSS et finalement SQL. Ces derniers mois, tout allait si bien sauf une seule chose ce matin.
Je finalise la base de données en faisant les ALTER TABLE pour les FOREIGN KEY et j'ai un problème pour ces dernières qui sont optionnelles.
Lorsque la FOREIGN KEY n'est pas obligatoire, je n'arrive pas à faire le ALTER TABLE pour cette situation là.
Le champ doit absolument avoir une valeur pour que les requêtes d'ajout et de modif fonctionne.
Est-ce que c'est possible et est-ce que quelqu'un peut m'aider ?
Je n'ai rien trouvé sur Internet.
Merci à tous
Je suis entrain de finaliser une application faite en PHP, HTML, Javascript, AJAX, CSS et finalement SQL. Ces derniers mois, tout allait si bien sauf une seule chose ce matin.
Je finalise la base de données en faisant les ALTER TABLE pour les FOREIGN KEY et j'ai un problème pour ces dernières qui sont optionnelles.
Lorsque la FOREIGN KEY n'est pas obligatoire, je n'arrive pas à faire le ALTER TABLE pour cette situation là.
Le champ doit absolument avoir une valeur pour que les requêtes d'ajout et de modif fonctionne.
Est-ce que c'est possible et est-ce que quelqu'un peut m'aider ?
Je n'ai rien trouvé sur Internet.
Merci à tous
A voir également:
- SQL Foreign Key
- Key windows 10 - Guide
- Wic reset key 16 characters free ✓ - Forum Imprimante
- Press the esc key for startup menu - Forum Matériel & Système
- Volume down key + power key for more than 7 secs traduction - Forum Samsung
- Word key - Télécharger - Sécurité
5 réponses
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
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
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 ^^'
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
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