Mysql Event 2 (Zamanlanmış Görev)

Mysql Event 2,

Event konusunda kaldığımız yerden devam edelim.Ürneklerle anlatmaya Çalışacağım.

Ürnek 1:

Bu örnekte 5 saniye de bi kronetmetre isimli tablomuza günün tarih ve
saatini insert eden bir event yazalım.Event’imizin ismide kronemetre olsun.

CREATE EVENT kronometre
ON SCHEDULE
EVERY 5 second
COMMENT ’5 sn de bir insert’
DO

insert into kronometre (zaman) values (now());

Bu eventimizi Çalıştırdıktan sonra kronetmetre tablosunun zaman kolonuna
now() fonksiyonu ile günün tarih ve saatini insert etmiş olacağız. Tabii bu eventin
Çalışabilmesi iÇin Mysql serverınızda Event işleminin aktif olması gerekmektedir.
Mysql Event 1 isimli makalemde nasıl aktif yapacağımızı anlatmıştım.

Ürnek 2:

Bu örneğimizde de belli bir tarih ve zamanda tek bir insert işlemi yaptıralım.

CREATE EVENT tek_insert
ON SCHEDULE AT ’2009-03-24 13:20:00′
DO INSERT INTO enevt_test (zaman) VALUES (NOW());

2009-03-24 13:20:00 tarih ve saati geldiğinde eventimiz Çalışmış olacak ve
now() fonksiyonu ile günün tarih ve saatini event_test tablomuzun zaman kolonuna insert
etmiş olacak.Bu even sadece 2009-03-24 13:20:00 tarihinde 1 defa Çalışacaktır.

Ürnek 3:

Bu örneğimizde de 5 gun sonrası iÇin bir drop işlemi yaptıralım.

CREATE EVENT `Drop_Yap`
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 5 DAY
DO DROP TABLE event_test;

Drop_Yap isimli Eventimiz Current_timestamp’e (bu günün tarihine) 5 gün ekleyecek
ve hedef tarih geldiğinde de event_test tablosunu drop edecektir.

Ürnek 4:

Bu örneğimizde de belli bir tarih aralığı kısıtı koyalım ve diyelim ki
bu tarih aralığında her 5 saniyede bir insert işlemi yap.

CREATE EVENT tarih_aralikli
ON SCHEDULE EVERY 5 SECOND
STARTS TIMESTAMP ’2009-03-24 16:00:00′
ENDS TIMESTAMP ’2009-03-30 16:00:00′
ON COMPLETION PRESERVE
COMMENT ‘Bir hafta sureyle her 5 saniye de bir calis’
DO INSERT INTO event_test (zaman) VALUES (CURRENT_TIMESTAMP, 10);

2009-03-24 16:00:00 ve 2009-03-30 16:00:00 tarih aralığında her 5 saniye de bir Çalışıp
event_test tablosunun zaman kolonuna current_timestamp’i yani günün tarih
ve saatini insert yapar. Bitiş tarih ve saati geldiğinde ise Çalışması sona erer.

Ürnek 5:

Bu son örneğimizde de her iki saniyede bir yazdığımız procedure yi
Çağıran bir event yazalım

CREATE EVENT procedure_cagir
ON SCHEDULE EVERY 2 SECOND
COMMENT ’2 sn de sp cagiracak’
DO CALL testProcedure();

procedure_cagir isimli eventimiz her 2 saniyede bir testProcedure() isimli
stored proceduru Çalıştıracaktır.

Tüm bu yazdığımız eventleri görmek iÇin ise;

SELECT * FROM mysql.event;
sorgusunu Çalıştırmamız yeterli olacaktır.

Bir sonraki makaleler de görüşmek dileğiyle,

Tayfur BÖLER
Database Administrator

Bugun Okunma Sayısı:0, Toplam Okunma Sayısı:2333

6 Cevap “Mysql Event 2 (Zamanlanmış Görev)”

  1. Vote -1 Vote +1onur
    diyor ki:

    Merhabalar,

    Yukarıda anlatmış olduğunuz bilgiler gerçekten çok faydalı, bunun için öncelikle teşekkürler. fakat yazılanları aynen uyguladığımda “Mysql Error#:1537 event “..event_adı..” already exist” diye bir hata alıyorum, bu hatanın sebebi ve çözümü hakkında bir bilginiz varsa buradan veya mail olu ile paylaşırsanız çok memnun olurum. tekrar teşekkürle iyi çalışmalar…

  2. Vote -1 Vote +1tayfurboler
    diyor ki:

    Merhabalar,
    Aldığınız hata bu event ismi zaten kullanılmakta hatası.
    Ismı degistirip denediniz mi?

  3. Vote -1 Vote +1onur
    diyor ki:

    Merhaba,
    Denedim fakat ne isim verirsem vereyim aynı hatayı alıyorum.
    bu event olayı “select” sorgusunu da kapsıyor değil mi?

  4. Vote -1 Vote +1tayfurboler
    diyor ki:

    Merhaba
    MySQL versiyonun minumum 5.1.12 olmalı. Eğer bu versiyondan daha düşük bir versiyon
    kullanırsan event tanımlayamazsın.
    Event işlemi herhangi bir result set döndürmez. Yani sadece select işlemi ile birşey yapamazsın.
    insert ,update ,delete,stored procedure,trigger vs gibi transaction işlemlerini scheduler etmek için kullanabilirsin.

  5. -1 Vote -1 Vote +1efehan
    diyor ki:

    Slm tayfun bey rica etsem mysql cron job ile ilgi bir makale yayınlayabilirseniz çok makbule geçecek ilgi ile takip ediyorum yazılarınızı başarılarınızın devamı deilerim

  6. Vote -1 Vote +1Murat
    diyor ki:

    merabalar faydalı konu için teşekkurler;
    Ben mysql veritabanımdan her gün gece 00:00 da mssql başka bir verileri alıp restore etmek istiyorum bu nasıl yapılabilir??

Yorum Ekle