Mysql
 sql >> Base de données >  >> RDS >> Mysql

Travailler avec des événements dans MySQL

Je crois que vous pensez cela dans la direction opposée :vous ne pouvez pas créer d'événement dans une procédure stockée, mais vous pouvez créer une procédure stockée et l'appeler à partir d'un événement.

Exemple :

delimiter $$
create procedure myProc()
-- Dummy procedure to move the data from mainTable to backupTable, 
-- and then clear (truncate) mainTable
begin
    insert into backupTable select * from mainTable;
    truncate mainTable;
end $$
delimiter ;

-- Now, suposing that you want to execute this procedure every hour:
delimiter $$
create event myEvent
    on schedule every 1 hour
    do
        begin
            call myProc();
        end $$
delimiter ;

Vous pouvez l'écrire comme n'importe quelle autre requête dans le plan de travail ou directement dans le client en ligne de commande.

À propos de votre préoccupation

Après avoir lu votre commentaire, je pense que vous êtes un peu confus quant à ce qu'est MySQL Workbench.

MySQL Workbench est uniquement une application graphique qui vous permet de vous connecter à un serveur MySQL et d'effectuer des requêtes et des tâches d'administration. Mais Workbench n'est pas le cœur de MySQL... ce n'est qu'un visualiseur (avec des stéroïdes, peut-être, mais un visualiseur après tout).

Désormais, le planificateur d'événements ne réside pas dans Workbench, mais dans l'instance de serveur MySQL à laquelle vous vous connectez. De même que les tables, vues, procédures et fonctions ne sont pas stockées dans l'interface Workbench mais dans le serveur, les événements sont également stockés dans le serveur.

(Oui, je crois que c'est un SNAFU pertinent que les événements programmés n'apparaissent nulle part dans l'interface graphique, mais... après un certain temps, on apprend à vivre avec ce genre de frustrations et à avancer dans la vie)

Peut-être que votre seule préoccupation est :"Hé, et si je veux savoir quels événements doivent être exécutés dans le planificateur d'événements ?" Vous pouvez exécuter une requête "show events" pour afficher une liste des événements dans la base de données actuelle, et vous pouvez exécuter "show create event yourEvent" pour afficher le create event syntaxe pour cet événement.

J'insiste :Lisez le manuel, et gardez-en une copie à portée de main (téléchargez le manuel de votre version de MySQL ici ).