sql >> Databasteknik >  >> RDS >> Mysql

Arbeta med evenemang i MySQL

Jag tror att du tänker i motsatt riktning:Du kan inte skapa en händelse i en lagrad procedur, men du kan skapa en lagrad procedur och anropa den från en händelse.

Exempel:

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 ;

Du kan skriva detta som vilken annan fråga som helst i arbetsbänken eller direkt i kommandoradsklienten.

Om din oro

Efter att ha läst din kommentar tror jag att du är lite förvirrad över vad MySQL Workbench är.

MySQL Workbench är bara en grafisk applikation som låter dig ansluta till en MySQL-server och utföra frågor och administrationsuppgifter. Men Workbench är det inte kärnan i MySQL... det är bara en tittare (med steroider, kanske, men en tittare trots allt).

Nu finns inte händelseschemaläggaren i Workbench, utan i MySQL-serverinstansen du ansluter till. Precis som tabellerna, vyerna, procedurerna och funktionerna inte lagras i Workbench-gränssnittet utan i servern, lagras även händelserna i servern.

(Ja, jag tror att det är en relevant SNAFU att de schemalagda händelserna inte syns någonstans i det grafiska gränssnittet, men... efter ett tag lär man sig att leva med den typen av frustrationer och gå vidare med livet)

Kanske din enda oro är:"Hej, och tänk om jag vill veta vilka händelser som är inställda att köra i händelseschemaläggaren?" Du kan köra en "visa händelser"-fråga för att visa en lista över händelserna i den aktuella databasen, och du kan köra "visa skapa händelse dinEvent" för att visa create event syntax för den händelsen.

Jag insisterar:Läs manualen och ha en kopia till hands (ladda ner manualen för din MySQL-version här ).




  1. Skapa dynamiskt ELLER-villkor genom att skicka en array till en fråga i MySQL PHP

  2. Bästa metoder för att visa sökresultat med tillhörande textutdrag från det faktiska resultatet

  3. Java:Infoga flera rader i MySQL med PreparedStatement

  4. MySQL endast inom innevarande månad?