J'essaie de créer un trigger sur MySQL mais j'ai un problème de syntaxe que je n'ai pas trouvé. Si quelqu'un plus d'expérience pouvait m'aider ce serait génial (c'est la première fois que j'utilise MySQL!) ...Problèmes avec la syntaxe mysql
La raison pour laquelle je crée ce déclencheur est de supprimer toutes les "étiquettes" orphelines, a une relation many-to-many avec "service_descriptor" (ces deux entités sont liées par service_labels).
Le code que j'ai est:
CREATE TRIGGER `trg_delete_orphan_label` AFTER DELETE
FOR EACH ROW ON `restdb`.`service_labels`
DELETE FROM `restdb`.`labels`
WHERE EXISTS (SELECT *
FROM old D
LEFT_JOIN `restdb`.`service_labels` SL ON SL.`id_label` = D.`id_label`
AND D.`id_service` = SL.`id_service`
WHERE SL.`id_label` IS NULL
`restdb`.`labels`.`id` = D.SL.`id_label`);
Merci à l'avance!
Je suis content que vous ayez trouvé quelque chose qui fonctionne, bien que je remarque que le déclencheur est sur une table différente maintenant. Votre solution est légèrement différente de la mienne tant sur le plan fonctionnel que sur le plan des performances. Votre déclencheur supprime TOUS les orphelins, alors que le mien ne supprime que les lignes nouvellement orphelines. Mon approche sera également plus rapide, donc vous pouvez vouloir le considérer. –
Oui! C'est vrai ... le problème est que ça ne marchait pas quand le trigger était sur la table service_labels, même si l'instruction de suppression fonctionne bien pour les orphelines ... c'est parce que la table service_labes n'était pas effacée directement ... a été supprimé par cacade après service_descriptor ... Pour cette raison j'ai changé la table et à cause de cela j'ai dû changer la logique aussi bien! – Alucard