Bonjour à tous,
Bon, le titre est un peu tordu mais voilà ce que je veux faire :
Sur l'update d'une colonne, je veux :
- enregistrer la nouvelle valeur de la ligne dans une autre base de données
- revenir à l'état précédent sur la base en cours.
Je veux donc que les modifications sur la base en cours ne ne fasse pas quand on demande l'update mais ce fasse sur l'autre base... Enregister sans enregistrer
Voilà un trigger qui marche... sauf la dernière ligne puisque j'essaye de faire un update sur l'enregistrement qui exécute le trigger :
Je ne sais pas si c'est très claire en tout cas merci d'avance pour vos idées !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 DELIMITER $$ CREATE TRIGGER brouillon AFTER UPDATE ON spectacles FOR EACH ROW BEGIN IF ((NEW.publish = '1') AND (OLD.publish = '0')) THEN #suppressions #spectacles DELETE FROM yvestest_draft.spectacles WHERE yvestest_draft.spectacles.idspectacle=NEW.idspectacle; #text_spectacle DELETE FROM yvestest_draft.text_spectacle WHERE yvestest_draft.text_spectacle.idspectacle=NEW.idspectacle; #spectacle_contact DELETE FROM yvestest_draft.spectacle_contact WHERE yvestest_draft.spectacle_contact.idspectacle=NEW.idspectacle; #spectacle_person DELETE FROM yvestest_draft.spectacle_person WHERE yvestest_draft.spectacle_person.idspectacle=NEW.idspectacle; #insertions #spectacles INSERT INTO yvestest_draft.spectacles SELECT * FROM yvestest.spectacles WHERE yvestest.spectacles.idspectacle=NEW.idspectacle; #text_spectacle INSERT INTO yvestest_draft.text_spectacle SELECT * FROM yvestest.text_spectacle WHERE yvestest.text_spectacle.idspectacle=NEW.idspectacle; #spectacle_contact INSERT INTO yvestest_draft.spectacle_contact SELECT * FROM yvestest.spectacle_contact WHERE yvestest.spectacle_contact.idspectacle=NEW.idspectacle; #spectacle_person INSERT INTO yvestest_draft.spectacle_person SELECT * FROM yvestest.spectacle_person WHERE yvestest.spectacle_person.idspectacle=NEW.idspectacle; #remise en etat du "vieux" titre UPDATE yvestest.spectacles SET title=OLD.title WHERE yvestest.spectacles.idspectacle=NEW.idspectacle; END IF; END$$;
++
Partager