Herhangi bir insert,update,delete sorgusundan sonra işlem yaptırmak istediğimizde isteğimizi yerine otomatik olarak sunucu tarafında yerine getirecek olan yapıya trigger(tetikleyici) diyoruz.Çalıştırılabilecek zamanlar şunlardır;
MSSQL de Tanımlarken BEGIN ve END blokları arasına işlemimizi yazıyoruz fakat MySQL de yazarken BEGIN ve END bloklarını kullanmıyoruz ! Yine MSSQL de DECLARE ile değişken tanımlayıp parametre gönderebiliyorken MySQL de DECLARE komutunu ve parametre kullanamıyoruz.(Çoklu ifadelerde BEGIN ve END blokları kullanılabileceğini makalede okudum fakat veritabanında sorgularken 1064 hatası aldım,yine aynı şekilde Declare ve parametre kullanılamayacağını farklı farklı makalelerde okudum ve kullanamadım,eğer kullanabilen ya da bilginin(yazılan gönderinin) yanlış/eksik olduğunu düşünen olursa öğrenmeye/eleştiriye açığım,ulaşabilir).
Create Trigger ifadesi tetikleyicimizi oluşturacağımız komuttur.Sonrasında tetikleyicimize bir isim veriyoruz ve "hangi anda" ON ifadesi ile "hangi tabloda" çalışmasını istediğimizi belirtiyoruz.Tabii ki tetikleyicimiz her bir satır/kayıt/girdi üzerinde işlem yapacağından FOR EACH ROW ile bu durumu belirtmeyi unutmuyoruz.Son olarak ise asıl gerçekleştirmesini istediğimiz iş yükünü/sorgularımızı yazıyor ve tetikleyicimiz kullanıma hazır hale geliyor.Örneğin;
CREATE TRIGGER trigger_adi BEFORE/AFTER INSERT/UPDATE/DELETE
ON tablo_adi
FOR EACH ROW
-- MySQL komutları
Tetikleyicimizi silmek istediğimizde ise;
DROP TRIGGER trigger_adi
komutu ile tetikleyicimizi kaldırmış oluyoruz.
Unutmadan sorgular öncesinde veritabanının yedeğini almada ya da şu makaleye göz atmanızda yarar var.Bir sonraki gönderi(lerde) örnekler üzerinde gitmeyi hedeflemekteyim.
SQLSTATE[HY000]: General error: 1442 Error (used by statement which invoked this stored function/trigger)
Windows Komut Satırından MySQL Erişimi
İki Gün Arasındaki Zaman Farkı (TIMESTAMPDIFF)