MySQL'de Triggerlar

26 Ocak Perşembe ´06
Dikkat: Bu yazının yazılma tarihinin üzerinden en az 60 gün geçmiş. İçerisindeki bilgiler güncelliğini yitirmiş olabilir. Yorumları ve güncellemeleri göz önünde bulundurarak yazıyı takip ediniz.

Triggerlar ne işe yarar ?

Bir veritabanına veri girmeden önce veya girdikten sonra güncelleme yaptıktan sonra yanı sorgularla anlatmak gerekirse INSERT, UPDATE, DELETE, BEFORE, AFTER gibi deyimleri kullanabiliyoruz.

Şimdi olayı bir de örnek üzerinden inceleyelim :
CREATE TABLE diger(witkey varchar(50)); CREATE TABLE test(veri varchar(50));
/* asil ornek asagida basliyor. Yukarıdaki örnek tablo olusturmak icin. */
DELIMETER | CREATE TRIGGER `test_bx` AFTER INSERT on test FOR EACH ROW BEGIN INSERT INTO diger SET witkey = new.veri; END; |
Şimdi yukarıdaki işlemleri inceleyelim:

İlk satırımızda Diger adında bir tablo oluşturduk ve içerisinde varchar türünde witkey adında bir column yerleştirdik. İkinci satırımızda test adında bir tablo oluşturduk ve içerisine gene varchar türünde veri adında bir column yerleştirdik. Ardından Syntax Problemleri olmaması ıcın Diger sorgumuzu delimeter tanımlayarak bunların içerisinde yazdık. CREATE TRIGGER ile trigger'imizi oluşturduk ardından veritabanımızın adını yazdıktan sonra `veritabaniadi`+`_`+`kısaltmamız` şeklinde yazdıktan sonra AFTER INSERT yani INSERT yapıldıktan sonra tabi bu nerede ? on test, test adlı beritabanı üzerinde ardından FOR EACH ROW BEGIN diyerek bunun ıcerısınde gerekli şartımız sağlandıktan sonra olacak işlemin neler yapmasını istiyorsak onları yazacağız.

INSERT INTO seklınde o gelen verinin aynısını diger tablosunda witkey column içerisine yazdıracagız. Bunun için SET witkey = new.veri; ile işlemimizi bitiriyoruz. burada witkey = veri`ye yeni girilen degeri yazdırıyoruz.

END; ile de Şartımızın sonuclanması dogrultusunda yaptıgımız işlemi sonlandırıyoruz ve DELIMETERi de kapatıyoruz. Artık herhangi bir şekilde test adlı tablodaki veri column'una girdigimiz veri otomatik olarak witkey column'una da geçicektir.

Unutmadan, Bu işlemler sadece 5.0.2 sürüm ve üzerinde çalışıyor.


Hazırlayan : Onur Yerlikaya

Yorumlar

Üye Resmi kenan nanek
11 Mayıs Salı ´10 11:48
konu ile alakası var mı bilmiyorum ama benim şöyle bir düşüncem vardı.
kullanıcılara doğum tarihlerinde otomatik mail göndermek isitiyorum bunu sadece mysql kullanarak  yapabilir miyim.

herhangi php kodu yazmadan.
11 Mayıs Salı ´10 20:35
Mysql bildiğim kadarıyla kendi kendine haraket edemez, işlev göremez. Diğer diller ile işlenip veri tutumunu ve verilerin hızlı bir şekilde işlenişini sağlar. Bu dediğin şeyi bir php, asp veya mysql işleyebilen bir yorumlayıcı ile yapabilirsin. Mysql ile bildiğim kadarıyla YAPAMAZSIN.
Üye Resmi deneyci
19 Ocak Çarşamba ´11 18:17
Böyle bir trigger hazırlayıp, her gün dönümünde bir kez çalıştırırsın. Doğal olarak her gün, o gün doğum tarihi olanlara bir mesaj gönderirsin.   :-)
Üye Resmi eser
7 Aralık Çarşamba ´16 09:22
peki hocam bunu mail olarak yapabilir miyiz
Yeni Yorum *
İletişim Bilgileri
*
*
E-Posta adresiniz gösterilmeyecektir.
(unut)
Güvenlik Kodu *

Gönderiliyor