Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/05/2011, 17h35   #1
Invité de passage
 
Inscription : mars 2011
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 12
Points : 4
Points : 4
Par défaut Problème Update dans un trigger After Delete

Bonjour,

J'essaie de faire fonctionner un trigger AFTER DELETE mais le traitement ne fonctionne pas. J'aimerais donc avoir un petit coup de pouce si possible.

Voici la structure des tables concernées par ce trigger:


Lorsque je supprime une CATEGORIE, par défaut la clé étrangère de catégorie passe en SET NULL comme indiqué sur le MLD ci-dessus. Je souhaiterais que lorsqu'on supprime une catégorie, que le booléen "actif" dans ARTICLE passe à 0.

J'ai donc construit le trigger suivant:

Code :
1
2
3
4
5
6
7
8
DELIMITER ;;
CREATE TRIGGER desactivarticle AFTER DELETE ON categorie
 FOR EACH ROW
 BEGIN
  UPDATE article
  SET actif= 0
  WHERE categorie_idcateg IS NULL;
 END;;
Mais celui-ci désactive tous les articles contenus dans la table à la suppression d'une catégorie, et non pas uniquement ceux dont la catégorie vient d'être supprimée.

J'ai donc essayé cette variante, mais cette fois ci le trigger ne modifie pas du tout la table article:

Code :
1
2
3
4
5
6
7
8
DELIMITER ;;
CREATE TRIGGER desactivarticle AFTER DELETE ON categorie
 FOR EACH ROW
 BEGIN
  UPDATE article
  SET actif= 0
  WHERE categorie_idcateg = old.idcateg;
 END;;
Pouvez-vous me dire ce qui ne va pas et éventuellement me corriger svp?

Vous remerciant par avance.

Cordialement.
gouzou38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2011, 17h57   #2
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
bonjour


et si le trigger, tu le faisais BEFORE a la place de AFTER, en utilisant l'id_categorie en clause WHERE ?
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2011, 18h18   #3
Invité de passage
 
Inscription : mars 2011
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 12
Points : 4
Points : 4
Je te remercie pour cette piste et ta réactivité, que je ne pourrais tester que demain. Je reviendrai sur ce topic après l'avoir testé pour l'annonce du verdict.

Cordialement.
gouzou38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 15h52   #4
Invité de passage
 
Inscription : mars 2011
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 12
Points : 4
Points : 4
Youpi! ça fonctionne!

Merci bien!

Cordialement.
gouzou38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h53.


 
 
 
 
Partenaires

Hébergement Web