O MySQL 5.6 - Criando um evento dentro de um procedimento armazenado
-
29-09-2020 - |
Pergunta
Eu estou tentando criar um procedimento que criar um evento no MySQL.
Por exemplo, algo semelhante a isto:
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 ;
Mas ele me dá o seguinte erro quando tento criar este procedimento.
ERROR 1576 (HY000): Recursion of EVENT DDL statements is forbidden when body is present
Como eu entendo o MySQL permitir procedimentos armazenados para ter de CRIAR EVENTO instrução sql dentro.(Citação da https://dev.mysql.com/doc/refman/5.6/en/create-event.html "Você pode criar um evento como parte de uma rotina, mas um evento não pode ser criado por um outro evento")
Você poderia por favor deixe-me saber o que está o erro aqui?
Obrigado.
Solução
Parece que há um conflito na documentação do MySQL.Eu acho CRIAR Sintaxe do EVENTO a secção de documentação do MySQL não é atualizado corretamente em versões posteriores.Apesar de "CRIAR EVENTO Sintaxe" seções diz
Você pode criar um evento como parte de uma rotina, mas um evento não pode ser criado por outro evento.
No Evento Programador De Restrições a secção de documentação do mysql, Ele diz
Um o evento não pode ser criado, alterado ou descartado por um armazenadas rotina, gatilho, ou outro evento.Um evento também não poderá criar, alterar, ou drop armazenados rotinas ou gatilhos.(Bug #16409, O Bug #18896)