MySQL 5.6 - Creazione di un evento all'interno di una procedura memorizzata
-
29-09-2020 - |
Domanda
Sto cercando di creare una procedura che crea un evento in MySQL.
Ad esempio, qualcosa di simile a questo:
delimiter //
CREATE PROCEDURE schedule_my_db_job()
BEGIN
CREATE EVENT MY_DB_JOB
ON SCHEDULE EVERY 1 MINUTE DO
BEGIN
SELECT * FROM information_schema.events; -- for example
END;
END//
delimiter ;
.
Ma mi dà il seguente errore quando provo a creare questa procedura.
ERROR 1576 (HY000): Recursion of EVENT DDL statements is forbidden when body is present
.
Come ho capito MySQL Consentire procedure memorizzate per creare un'istruzione SQL evento all'interno.(Citazione da https://dev.mysql.com/doc/Refman / 5.6 / IT / Crea-event.html "È possibile creare un evento come parte di una routine memorizzata, ma un evento non può essere creato da un altro evento")
Potresti per favore fammi sapere qual è l'errore qui?
Grazie.
Soluzione
Sembra che ci sia un conflitto nella documentazione di MySQL. Penso che Crea la sintassi dell'evento Sezione nella documentazione MySQL non lo ècorrettamente aggiornato nelle versioni successive.Sebbene le sezioni "Crea syntax eventi" dice
.È possibile creare un evento come parte di una routine memorizzata, ma un evento non può essere creato da un altro evento.
in eventoScheduler Restrictions Sezione nella documentazione MySQL, Dice
.Un evento non può essere creato , alterato o rilasciato da una routine memorizzata , trigger, o un altro evento.Un evento potrebbe anche creare, modificare o Drop stored routine o trigger.(Bug # 16409, Bug # 18896)