sql >> Database >  >> RDS >> Mysql

Werken met gebeurtenissen in MySQL

Ik denk dat je dit in de tegenovergestelde richting denkt:je kunt geen gebeurtenis maken in een opgeslagen procedure, maar je kunt wel maak een opgeslagen procedure en roep deze op vanuit een gebeurtenis.

Voorbeeld:

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 ;

U kunt dit schrijven als elke andere query in de workbench of rechtstreeks in de opdrachtregelclient.

Over uw bezorgdheid

Na het lezen van je reactie, denk ik dat je een beetje in de war bent over wat MySQL Workbench is.

MySQL Workbench is slechts een grafische toepassing waarmee u verbinding kunt maken met een MySQL-server en query's en beheertaken kunt uitvoeren. Maar Workbench is niet de kern van MySQL... het is slechts een kijker (met steroïden misschien, maar toch een kijker).

Nu bevindt de gebeurtenisplanner zich niet in Workbench, maar in de MySQL-serverinstantie waarmee u verbinding maakt. Net zoals de tabellen, views, procedures en functies niet in de Workbench-interface maar in de server worden opgeslagen, worden de gebeurtenissen ook op de server opgeslagen.

(Ja, ik geloof dat het een relevante SNAFU is dat de geplande evenementen nergens in de grafische interface worden weergegeven, maar... na een tijdje leer je leven met dat soort frustraties en verder gaan met het leven)

Misschien is je enige zorg:"Hé, en wat als ik wil weten welke evenementen worden uitgevoerd in de evenementenplanner?" U kunt een "show events"-query uitvoeren om een ​​lijst van de gebeurtenissen in de huidige database weer te geven, en u kunt "show create event yourEvent" uitvoeren om de create event te tonen. syntaxis voor dat evenement.

Ik sta erop:lees de handleiding en houd een kopie bij de hand (download de handleiding voor uw MySQL-versie hier ).




  1. Rijdoelen, deel 4:Het anti-join-antipatroon

  2. Vlieg hoger in de cloud met MariaDB SkySQL

  3. Cronjob elke minuut

  4. Voorbeeld van het gebruik van bind_result versus get_result