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.

È stato utile?

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)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top