1 / 11

Raspored događaja ( Scheduled Events )

Raspored događaja ( Scheduled Events ). Scheduled Events u MySQL -u. Što su to rasporedi događaj a ( Scheduled Events )? privremeni trigger-i ne odnose se na određenu tab elu i zvrš avaju SQL kod : u određenom trenutku ili u dat im intervalima

bryony
Download Presentation

Raspored događaja ( Scheduled Events )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Raspored događaja (Scheduled Events)

  2. Scheduled Events uMySQL-u Što suto rasporedi događaja (Scheduled Events)? • privremeni trigger-i • ne odnose se na određenu tabelu • izvršavaju SQL kod: • u određenom trenutku • ili u datim intervalima Prvi put uvedeni sa verzijom MySQL 5.1 Zašto koristiti raspored događaja? - Mogućnost korišćenja na različitim platformama - Nema potrebe za drugim aplikacijama - Nema prekoračenja

  3. Kako rade rasporedi događaja?

  4. Scheduled Events uMySQL-u Kako se koriste rasporedi događaja ? 1. Omogućavanjem opcijeevent scheduler a)u opcionom fajlu postavkom (event-scheduler=1) b) online postavljanjem naredbe • SET GLOBAL event_scheduler=ON; 2. Kreiranje događaja 3. Provera efekta događaja SHOW GLOBAL VARIABLES LIKE 'event%';

  5. Kreiranje događaja – sintaksa CREATE EVENT event_name ON SCHEDULE AT {DATE AND TIME} DO {SQL COMMAND}; CREATE EVENT event_name ON SCHEDULE EVERY {X} {SECOND|MINUTE|HOUR|DAY|MONTH|YEAR|WEEK} DO {SQL COMMAND}; CREATE EVENT event_name ON SCHEDULE {schedule clause} [ON COMPLETION [NOT] PRESERVE] [STARTS {DATE TIME}] [ENDS {DATE TIME} ] [ENABLE|DISABLE] DO {SQL COMMAND};

  6. Kreiranje događaja u određeno vreme CREATE EVENT event_name ON SCHEDULE AT '2012-05-16 11:05:00' DO INSERT INTO some_table VALUES (‘uhvacen si‘, now()); CREATE EVENT event_name ON SCHEDULE AT now() + interval 20 minute DO CALL smart_procedure()

  7. Kreiranje periodičnog događaja CREATE EVENT event_name ON SCHEDULE EVERY 20 MINUTE DO INSERT INTO some_table VALUES (‘uhvacen si', now()); CREATE EVENT event_name ON SCHEDULE every 7 DAY DO CALL smart_procedure()

  8. Kreiranje periodičnog događaja CREATE EVENT event_name ON SCHEDULE EVERY 10 MINUTE STARTS NOW() + INTERVAL 2 HOUR ENDS NOW() + INTERVAL 4 HOUR DO CALL some_procedure(); # kreiranje događaja koji se aktivira svakih # 10 minuta, ali se ne izvršavaju odmah. # Izvršićese za 2 sata i završiće se dva sata kasnije

  9. Prikazivanje događaja. SHOW EVENTS ili SELECT * FROM INFORMATION_SCHEMA.EVENTS • Brisanje događaja. DROP EVENT event_name • Dodavanje privilegija korisniku (kreiranje, menjanje, brisanje) u vezi sa događajima. GRANT EVENT ON myschema.* TO email@domen • Menjanje događaja CREATE EVENT event_name ON SCHEDULE EVERY 20 MINUTE STARTS NOW() + INTERVAL 1 HOUR DO INSERT INTO some_table VALUES (‘uhvacen si', now()); ALTER EVENT event_name ON SCHEDULE EVERY 20 MINUTE STARTS NOW() + INTERVAL 1 MINUTE;

  10. Napomene: Događaji ne mogu da pristupe operativnom sistemu. Zbog toga događaji NE MOGU:  da šalju email  listaju direktorijume  upisuju fajlove  izvršavaju aplikacije Normalno, kada je istekao događaj, odmah se briše. To se može promeniti tako što se specificira ON COMPLETION PRESERVE. Po defaultu je ON COMPLETION NOT PRESERVE.

  11. Primer: Odrediti procenat sedišta u avionu koji su rezervisani za svaki let u svakom satu i u log tabelu evidentirati letove sa više od 80 procenta popunjenosti. CREATE EVENT util_hour ON SCHEDULE EVERY 1 HOUR ENABLE DO BEGIN DECLARE fid INT; DECLARE fdate DATE; DECLARE str TEXT DEFAULT ''; DECLARE util FLOAT; DECLARE c CURSOR FOR SELECT s.FlightID, s.FlightDate, 1-(SUM(s.CurrSeats) /(SELECT SUM(fc.MaxSeats) FROM flightclass AS fc WHERE fc.FlightID = s.FlightID GROUP BY FlightID)) AS u FROM stats AS s GROUP BY s.FlightID, s.FlightDate HAVING u > 0.80; OPEN c; l: LOOP FETCH c INTO fid,fdate,util; SET str = CONCAT('Flight # ', fid, ' on ‘,fdate, ": ", ROUND(util*100), '%'); INSERT INTO log (ByUser, Note, EventTime) VALUES (CURRENT_USER(), str, NOW()); END LOOP l; CLOSE c; END

More Related