J'ai une table où j'ai une colonne nommée state(int(2))
et modify_time
(time_stamp
sur la mise à jour de l'horodatage actuel).
J'ai un déclencheur de mise à jour qui modifie la valeur de la colonne d'état sur 0
Basé sur une condition.
Je veux définir la valeur de state
colonne sur 1
après 24 heures de modify_time
, si c'est toujours 0
.
J'ai essayé ci-dessous la méthode pour tester:
CREATE EVENT myevent1
ON SCHEDULE AT current_timestamp + interval 1 minute
DO UPDATE test.mytabletable SET state = 0;
Cela n'a rien fait. Y a-t-il une méthode alternative?
SET GLOBAL event_scheduler = ON; -- enable event scheduler.
SELECT @@event_scheduler; -- check whether event scheduler is ON/OFF
CREATE EVENT e_store_ts -- create your event
ON SCHEDULE
EVERY 24 HOURS -- run every 24 hours
DO
UPDATE myschema.youtable set mycolumn='1'
Votre requête UPDATE
nécessitera du travail, car comme écrit, il mettra à jour toutes les valeurs state
à 0 chaque minute, mais si cela ne fonctionne pas, vous devez vérifier que le planificateur d'événements est en cours d'exécution.
mysql> show variables like 'event_scheduler';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | OFF |
+-----------------+-------+
1 row in set (0.00 sec)
Ça ne devrait pas être éteint.
mysql> set global event_scheduler = on;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'event_scheduler';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | ON |
+-----------------+-------+
1 row in set (0.00 sec)
Si c'est déjà sur, vérifiez votre journal d'erreur MySQL. Les événements qui échouent à exécuter vont enregistrer les messages là-bas.