[TRIGGER] erreur 1442 : le trigger se déclenche mais n'agit pas.
Bonjour,
J'ai un trigger attaché à ma base dont voici le code :
Code:
1 2 3 4 5 6
| DELIMITER //
CREATE TRIGGER nettoyage_caractere AFTER DELETE ON caracteristique FOR EACH ROW
BEGIN
DELETE FROM nomcaracteristique WHERE OLD.cod_carac NOT IN(SELECT id_caracteristique FROM caracteristique);
END//
DELIMITER; |
celui-ci a bien été enregistré par la base (même dans phpMyAdmin)
Or lorsque j'utilise mon script php de destruction d'un item dans la table `caracteristique` le trigger ne fonctionne pas.
Je suis donc allé tester directement dans phpMyAdmin la destruction de l'item concerné et là... :aie:
Voici l'erreur :
Code:
#1442 - Can't update table 'caracteristique' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Donc je ne comprend pas. Apparement il ne peut pas updater tout de suite car le trigger est en train d'agir sur la table. Mais cette action se fait apès la destruction, donc... Est-ce cette confusion qui empèche le trigger d'agir ?
Quelqu'un saurait-il m'aiguiller ?
Merci
Foreign KEY, that is the solution !
Et bien un grand merci pour la solution "Foreign Key".
J'ai viré ma procédure stockée, et créé ma clé et mon index avec ON DELETE CASCADE.
Résultat nickel, et en une seule requête. Donc très satisfaisant.
Merci encore (je vais quand même vérifier que le serveur distant accepte innodB, si ce n'est pas le cas... on changera d'hébergement :mrgreen:)