sql >> Database teknologi >  >> RDS >> Mysql

Arbejde med begivenheder i MySQL

Jeg tror, ​​du tænker det i den modsatte retning:Du kan ikke oprette en begivenhed i en lagret procedure, men du kan oprette en lagret procedure og kalde den fra en begivenhed.

Eksempel:

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 skrive dette som en hvilken som helst anden forespørgsel i arbejdsbordet eller direkte i kommandolinjeklienten.

Om din bekymring

Efter at have læst din kommentar tror jeg, at du er lidt forvirret over, hvad MySQL Workbench er.

MySQL Workbench er kun en grafisk applikation, der giver dig mulighed for at oprette forbindelse til en MySQL-server og udføre forespørgsler og administrationsopgaver. Men Workbench er ikke kernen i MySQL... det er kun en seer (med steroider, måske, men en seer trods alt).

Nu findes begivenhedsplanlæggeren ikke i Workbench, men i den MySQL-serverforekomst, du opretter forbindelse til. Ligesom tabellerne, visningerne, procedurerne og funktionerne ikke er gemt i Workbench-grænsefladen, men i serveren, gemmes begivenhederne også på serveren.

(Ja, jeg mener, det er en relevant SNAFU, at de planlagte begivenheder ikke vises nogen steder i den grafiske grænseflade, men... efter et stykke tid lærer man at leve med den slags frustrationer og komme videre med livet)

Måske er din eneste bekymring:"Hej, og hvad nu hvis jeg vil vide, hvilke begivenheder der er indstillet til at køre i begivenhedsplanlæggeren?" Du kan udføre en "vis begivenheder"-forespørgsel for at vise en liste over begivenhederne i den aktuelle database, og du kan udføre "vis opret begivenhed din begivenhed" for at vise create event syntaks for den begivenhed.

Jeg insisterer:Læs manualen, og hold en kopi ved hånden (download manualen til din MySQL-version her ).




  1. Problemer med at oprette MySQL-forespørgsel i Symfony, der indeholder JOIN og RAND()

  2. Tovejs DB-kryptering sikker selv fra Admin

  3. mysql glemmer, hvem der er logget ind:kommando nægtet til bruger ''@'%'

  4. Bestil ved at bruge en parameter for kolonnenavnet