Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Arbeiten mit Ereignissen in MySQL

Ich glaube, Sie denken in die entgegengesetzte Richtung:Sie können kein Ereignis in einer gespeicherten Prozedur erstellen, aber Sie können Erstellen Sie eine gespeicherte Prozedur und rufen Sie sie von einem Ereignis aus auf.

Beispiel:

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 ;

Sie können dies wie jede andere Abfrage in der Workbench oder direkt im Befehlszeilen-Client schreiben.

Über Ihre Bedenken

Nachdem ich Ihren Kommentar gelesen habe, glaube ich, dass Sie etwas verwirrt darüber sind, was MySQL Workbench ist.

MySQL Workbench ist nur eine grafische Anwendung, mit der Sie eine Verbindung zu einem MySQL-Server herstellen und Abfragen und Verwaltungsaufgaben ausführen können. Aber Workbench ist nicht der Kern von MySQL ... es ist nur ein Viewer (mit Steroiden vielleicht, aber immerhin ein Viewer).

Jetzt befindet sich der Ereignisplaner nicht in Workbench, sondern in der MySQL-Serverinstanz, zu der Sie eine Verbindung herstellen. So wie die Tabellen, Ansichten, Prozeduren und Funktionen nicht in der Workbench-Oberfläche, sondern auf dem Server gespeichert werden, werden auch die Ereignisse auf dem Server gespeichert.

(Ja, ich glaube, es ist ein relevanter SNAFU, dass die geplanten Ereignisse nirgendwo in der grafischen Benutzeroberfläche angezeigt werden, aber ... nach einer Weile lernt man, mit dieser Art von Frustration zu leben und mit dem Leben weiterzumachen) P>

Vielleicht ist Ihre einzige Sorge:"Hey, und was ist, wenn ich wissen möchte, welche Ereignisse im Ereignisplaner ausgeführt werden sollen?" Sie können eine „show events“-Abfrage ausführen, um eine Liste der Ereignisse in der aktuellen Datenbank anzuzeigen, und Sie können „show create event yourEvent“ ausführen, um das create event anzuzeigen Syntax für dieses Ereignis.

Ich bestehe darauf:Lesen Sie das Handbuch und halten Sie eine Kopie bereit (laden Sie das Handbuch für Ihre MySQL-Version herunter hier ).