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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.