ana sayfa > Haberler, PHP ve MYSQL > Mysql’de Trigger’lar(Tetikleyici)

Mysql’de Trigger’lar(Tetikleyici)

Salı, 26 Eyl 2006

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));
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

1.ci 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.

2.ci 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 sadece : 5.0.2 versiyon üzerinde çalışıyor.

Ben bu işlemleri 5.1.5-alpha sürümünde denedim. Gayet de güzel çalışıyor. 5.1.5-alpha sürümü için http://www.mysql.com adresini ziyaret edin 😉

Iyi çalışmalar,
Hazırlayan : Onur Yerlikaya

  1. Gökhan
    | #1

    Şimdi bu Delimeter ne anlama geliyor anlayamadım. Bir de burada kullanılan döngü çeşidi olarak bir for each mı var, varsa row’un dışında ne gibi parametreleri var?

  2. | #2

    evet biraz daha detaylı bilgi verebilirmisiniz bu konuda ?

    mesela witkey nasıl bi tür onun dışında bu for each row ‘un calısma mantığı espirisi ne vs.vs. lütfen biraz daha bilgi

  1. şimdilik geri bağlantı yok