Trigger de mise à jour d'un trigger
Bonsoir les développeurs. J'ai un bobo avec mon trigger de mise à jour.
En fait j'ai une table personnel dans ma base et contient le champ etat qui prend deux valeurs Absent et Present.
Je veux que après 30 jours le champ etat passe automatiquement à Absent de chaque personnel selon la date d'activation.
Code sql du trigger:
Code:
1 2 3 4 5 6 7
|
CREATE TRIGGER maj_etat
AFTER UPDATE ON personnel
BEGIN
UPDATE personnel SET état ='Absent'
WHERE DATEDIFF(ADDDATE(SYDATE(), 30),SYSDATE()) = 30;
END; |
Merci pour vos lumières.
Cordialement.
Gestionnaire d'évènements event_scheduler avec MySQL
MySQL dispose d'un gestionnaire d'évènement qui par défaut est désactivé.
Il fonctionne comme un cron.
Pour l'activer faire :
Code:
SET GLOBAL event_scheduler = ON;
Pour le désactiver faire :
Code:
SET GLOBAL event_scheduler = OFF;
Le code suivant fait une insertion toute les minutes dans la table messages, pendant une heure.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
SET GLOBAL event_scheduler = ON;
DROP TABLE IF EXISTS messages;
DROP EVENT IF EXISTS tesla_event;
CREATE TABLE IF NOT EXISTS messages (
id INT PRIMARY KEY AUTO_INCREMENT,
message VARCHAR(255) NOT NULL,
creation DATETIME NOT NULL
);
CREATE EVENT IF NOT EXISTS tesla_event
ON SCHEDULE EVERY 1 MINUTE
STARTS CURRENT_TIMESTAMP
ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR
DO INSERT INTO messages(message, creation) VALUES('Test MySQL Event 1', NOW());
SELECT * FROM messages; |
Pour plus de détails (document en anglais):
http://www.mysqltutorial.org/mysql-t...heduled-event/