Bonjour,
Je suis actuellement confronté à un phénomène inattendu en utilisant les triggers avec une table de test sous MySQL 5.0.
Je crée deux triggers très simples permettant les mise à jour des champs date sur l'insertion et la mise à jour de l'enregistrement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 CREATE TABLE test_trigger ( id int unsigned not null auto_increment, code varchar(30) not null, date_creation timestamp not null, date_maj timestamp not null, PRIMARY KEY(id), KEY(code) ) ;
Ensuite, j'exécute une insertion.
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 DELIMITER // CREATE TRIGGER d_bi_test_trigger BEFORE INSERT ON test_trigger FOR EACH ROW BEGIN SET new.date_creation = Now() ; SET new.date_maj = Now() ; END // DELIMITER ; DELIMITER // CREATE TRIGGER d_bu_test_trigger BEFORE UPDATE ON test_trigger FOR EACH ROW BEGIN SET new.date_maj = Now() ; END // DELIMITER ;
Le résultat est conforme à ce qui est attendu :
Code : Sélectionner tout - Visualiser dans une fenêtre à part INSERT INTO test_trigger(code) VALUES ('Objet1') ;
Ensuite, je fais une mise à jour de cet enregistrement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 +----+--------+---------------------+---------------------+ | id | code | date_creation | date_maj | +----+--------+---------------------+---------------------+ | 1 | Objet1 | 2007-08-13 11:34:54 | 2007-08-13 11:34:54 | +----+--------+---------------------+---------------------+
Et le résultat est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part UPDATE test_trigger SET code='Objet2' WHERE code='Objet1' ;
En résumé mon déclencheur sur l'update semble avoir effectué les mêmes actions que mon déclencher sur l'insert, c'est-à-dire la maj de la "date de maj" et de la "date_creation"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 +----+--------+---------------------+---------------------+ | id | code | date_creation | date_maj | +----+--------+---------------------+---------------------+ | 1 | Objet2 | 2007-08-13 11:35:25 | 2007-08-13 11:35:25 | +----+--------+---------------------+---------------------+
Etonnant, non ?
Merci d'avance pour vos avis éclairés...
Partager