MySQL Trigger Nedir? Kullanımı

Yazıda Trigger nedir ile MySQL Trigger anlatılmış, SQL Server, Oracle vb. sistemlerde sıklıkla kullanılan Trigger kullanımı örneklerle anlatılmıştır.

Trigger nedir?

MySQL içerisinde kullanılan Trigger yani tetikleyiciler MySQL Saklı Yordamların özel bir türüdür.

Tetikleyicileri saklı yordamlardan ayıran en önemli özellik saklı yordamları elle çalıştırmamız gerekirken, tetikleyiciler veriler üzerinde değişiklik yapıldığında kendiliğinden çalışmasıdır.

Tetikleyiciler çoğunlukla veri bütünlüğü ve güvenliğini sağlamak için kullanılır.

MySQL içerisindeki tetikleyiciler herhangi bir değer döndürmez.

MySQL Trigger oluşturma

MySQL tetikleyicileri INSERT, UPDATE ve DELETE işlemlerinden önce (BEFORE) veya sonra (AFTER) çalıştırılır.

Tetikleyiciler CREATE TRIGGER anahtar kelimesi ile oluşturulur.

CREATE TRIGGER trigger_adi BEFORE/AFTER INSERT/UPDATE/DELETE
ON tablo_adi
FOR EACH ROW
BEGIN
  -- MySQL ve SQL komutları
END;

INSERT ve UPDATE işleminde yeni veriye NEW anahtar kelimesi, UPDATE ve DELETE işleminde eski veriye OLD anahtar kelimesiyle erişilir.

Tetikleyicileri kullanarak urunler tablosuna bir ürün eklendiğinde islem tablosuna eklenen ürün ile ilgili bilgi kaydeden tetikleyiciyi oluşturalım.

DELIMITER //
CREATE TRIGGER bir_urun_eklendi BEFORE INSERT
ON urunler
FOR EACH ROW
BEGIN
  INSERT INTO islem(islem_adi) VALUES(CONCAT(NEW.urun_adi, ' eklendi.'));
END//
DELIMITER ;

Tetikleyiciyi oluşturduktan sonra urunler tablosunda yeni bir kayıt eklendiğinde islem tablosuna eklenen ürün ile ilgili kayıt eklenecektir.

Yukarıdaki tetikleyici oluşturma yapısını kullanarak urunler tablosunda bir kaydın silinmesi ile silinen ürün adını islemler tablosuna kaydeden tetikleyiciyi oluşturalım.

DELIMITER //
CREATE TRIGGER bir_urun_silindi BEFORE DELETE
ON urunler
FOR EACH ROW
BEGIN
  INSERT INTO islem(islem_adi) VALUES(CONCAT(OLD.urun_adi, ' silindi.'));
END//
DELIMITER ;

Eklenen ürünle ilgili bilgiye NEW silinen ürünle ilgili bilgiye OLD anahtar kelimesi ile ulaşıldığına dikkat edelim.

MySQL saklı yordamlar içerisinde kullanılan değişken tanımlama if, elseif, else, case when, while gibi ifadeleri de tetikleyici içerisinde kullanabiliriz.

Ancak gereğinden fazla tetikleyici kullanımı veri tabanı sunucusunu yoracaktır.

Hayırlı günler dilerim.

Yusuf SEZER

Yusuf SEZER

Computer Engineer who interested about web technologies, algorithms, artificial intelligence and embedded systems; constantly exploring new technologies.


Bunlara'da bakmalısın!