Esamina quanto segue.
Emetti un select CURRENT_TIMESTAMP;
o
select count(*) as theCount
from customer_group
where is_status=1 and CURRENT_TIMESTAMP >= end_date;
In altre parole, fai qualche ricognizione. Gli eventi hanno esito positivo o negativo in quanto non dispongono di un'interfaccia utente.
Esegui alcuni comandi come:
show variables where variable_name='event_scheduler';
-- attualmente SPENTO (o potrebbe essere ACCESO)
Specifica l'ora di inizio del tuo evento durante la creazione e specifica ON COMPLETION PRESERVE
come
drop event if exists `Every_5_Minutes_QuestionUpdateImport`;
DELIMITER $$
CREATE EVENT `Every_5_Minutes_QuestionUpdateImport`
ON SCHEDULE EVERY 5 MINUTE STARTS '2015-09-01 00:00:00'
ON COMPLETION PRESERVE
DO BEGIN
--
-- all your statements go here
--
END$$
DELIMITER ;
Attiva il gestore eventi:
SET GLOBAL event_scheduler = ON; -- turn her on and confirm below
Confermalo:
show variables where variable_name='event_scheduler';
Esamina lo stato di tutti gli eventi in un determinato database in base al nome del database:
show events from stackoverflow; -- note stackoverflow is my database name
Disabilita o abilita un determinato evento per nome nel db correntemente selezionato:
ALTER EVENT Every_2_Minutes_QuestionUpdateImport disable;
ALTER EVENT Every_2_Minutes_QuestionUpdateImport enable;
E, ultimo ma non meno importante, quando scrivo un nuovo evento, aggiungo sempre inizialmente le istruzioni dell'evento per accedere a una tabella di registro (con un'istruzione insert e un datetime di now()
). In questo modo, so che è stato attivato e che i dati in una clausola where come la tua forse non mi danno una lettura sbagliata dell'intera faccenda.
E voglio dire che impazzisco dappertutto. Inizialmente, poi lo rimuovo in seguito:
set filename:=concat('c:\\datavault\\stackoverflow\\app01\\batches\\processMe_',LPAD(@idToPerform, 8, '0'),'.txt');
set logMsg:=concat("It would appear I am to process this thing: ",filename);
insert EvtsLog(incarnationId,evtName,step,debugMsg,dtWhenLogged)
select incarnationId,evtAlias,10,logMsg,now(); -- 10: some step somewhere in the middle
Ricorda per tutti gli scopi pratici (tranne forse il tuo tavolo a cui tieni davvero dalla tua domanda) ... che EvtsLog
di mio è la tua unica interfaccia utente come programmatore di eventi e il tuo migliore amico.
Guarda la pagina del manuale per sapere cosa SU COMPLETION PRESERVE significa così come altre cose.