MySQL

MySQL Trigger Kullanımı

MySQL tetikleyicileri(trigger), tablolara veri eklerken, güncellerken veya satırları kaldırırken belirli kısıtlamaları uygular.

MySQL’deki sütunlar, bir miktar değer kısıtlaması uygular. Örneğin, bir sütunu tiny int olarak ayarlamak ve null olmamasını zorunlu kılmak, küçük bir sayı değeri girişi gerektirir. Ancak, veri bütünlüğünü korumak için daha fazla kısıtlamaya ihtiyaç vardır.

Bu yazı, kişisel blogunuzda MySQL tetikleyicilerini nasıl kullanacağınızı ayrıntılı bir şekilde açıklar ve her bir tetikleyici türü için somut örnekler sunar.

MySQL’de Tetikleyici Nedir?

Bir tetikleyici, bir olayın bir tabloda gerçekleştiğinde devreye giren adlandırılmış bir MySQL nesnesidir. Tetikleyiciler, belirli bir tablo ile ilişkilendirilmiş özel bir depolanan prosedür türüdür.

MySQL CREATE TRIGGER

Bir tetikleyici, belirli bir olaya yanıt olarak otomatik olarak yürütülen SQL ifadeleri kümesidir; bu olaylar arasında özellikle belirtilen bir tabloda gerçekleşen INSERT, UPDATE veya DELETE işlemleri bulunmaktadır.

CREATE TRIGGER ifadesi, bir tablo ile ilişkilendirilmiş yeni bir tetikleyici oluşturmanıza olanak tanır.

İşte CREATE TRIGGER ifadesinin sözdizimi:

Not: tetikleciyi adı genellikle tabloadı – before|after }-{insert|update|delete} şeklinde yazılır. Örnek: ogrenci_before_insert şeklinde bir isim vermek daha uygundur.

  • trigger_name: Tetikleyici adı.
  • BEFORE veya AFTER: Tetikleyicinin ne zaman yürütüleceğini belirler.
  • INSERT, UPDATE veya DELETE: Tetikleyiciyi etkinleştiren işlemin türünü belirler.
  • table_name: Tetikleyicinin tanımlandığı tablonun adı.
  • FOR EACH ROW: Tetikleyicinin tetikleyici olayı tarafından etkilenen her bir satır için bir kez yürütülmesini belirtir.
  • BEGIN ve END: Tetikleyici gövdesini sınırlar; burada yürütülecek SQL ifadelerini tanımlarsınız.
  • Tetikleyici gövdesi, işlem tarafından etkilenen sütunların değerlerine erişebilir.

Olayın tetiklendikten ÖNCE ve SONRA gelen sütun değerleri arasındaki farkı ayırt etmek için NEW ve OLD değiştiricilerini kullanırsınız.

Örneğin, sayfasayisi sütunundaki bir değeri güncellerseniz, tetikleyici gövdesinde güncelleme ÖNCESİ sayfasayisi sütununun değerine OLD.sayfasayisi ve yeni değere NEW.sayfasayisi şeklinde erişebilirsiniz.

Aşağıdaki tablo, OLD ve NEW değiştiricilerinin kullanılabilirliğini göstermektedir:

Olay / Etkileşim TürüOLD ModifierNEW Modifier
INSERTNULLDeğer Var
UPDATEDeğer VarDeğer Var
DELETEDeğer VarNULL

Bu tablo, OLD ve NEW değiştiricilerinin belirli olay ve etkileşim türlerinde hangi durumlarda kullanılabileceğini gösterir.

MySQL Trigger Örnekleri

MySQL Trigger Örneği 1:

Tablonuzu ve tabloyla ilişkili bir tetikleyici örneğini oluşturalım. Aşağıda, “kitap” adlı basit bir tabloyu ve bu tabloya bir güncelleme tetikleyici örneğini içeren SQL ifadelerini bulabilirsiniz:

1. Kitap Tablosunu Oluşturma:

2. Kitap Tablosuna Veri Ekleme:

3. Kitap Tablosu İçin Güncelleme Tetikleyicisi Oluşturma:

Bu örnekte, “kitap” adlı bir tablo oluşturulmuş ve tablonun güncellenmesi durumunda tetiklenecek bir “kitap_guncelleme” adlı tetikleyici eklenmiştir. Tetikleyici, güncelleme işleminden önce her bir satır için çalışacak şekilde ayarlanmıştır. Tetikleyici, güncelleme öncesindeki ve sonrasındaki değerleri alarak konsola bir bilgi mesajı yazdırmaktadır. Bu, gerçek dünya senaryolarına uygun olarak daha karmaşık hale getirilebilir.

MySQL Trigger Örneği 2:

MySQL Trigger Örneği: “islem_after_update”

MySQL tetikleyicileri, belirli bir olayın gerçekleşmesi durumunda otomatik olarak çalışan SQL kodlarıdır. Aşağıda, bir “islem” tablosu üzerinde güncelleme yapıldığında çalışan bir tetikleyici örneği bulunmaktadır.

Bu tetikleyici, “islem” tablosunda bir güncelleme yapıldığında çalışacaktır. Güncelleme işlemi sonrasında, ilgili “kitapno” ve “ogrno” değerlerine göre “kitap” ve “ogrenci” tablolarındaki verileri güncelleyecektir.

Bu örnek, bir öğrencinin okuduğu bir kitaptaki sayfa sayısına bağlı olarak puanını güncellemek için kullanılabilir. Tetikleyici, güncelleme işlemi gerçekleştiğinde otomatik olarak devreye girer ve gerekli güncellemeleri yapar.

MySQL Trigger Örnek 3:

MySQL Tetikleyici Örneği: “islem_before_insert”

Bu tetikleyici, “islem” tablosuna yeni bir kayıt eklenmeden önce çalışacaktır. Tetikleyici, eklenmeye çalışılan kaydın öğrencinin daha önce iade etmediği bir kitap içerip içermediğini kontrol eder. Eğer öğrencinin iade etmediği bir kitap varsa, tetikleyici bir hata mesajı gönderecektir.

Bu örnek, öğrencilerin alıp henüz iade etmedikleri kitapları kontrol etmek için kullanılabilir ve bu sayede sistemin daha tutarlı olmasını sağlar.

Sonuç

Bu makalede, MySQL tetikleyicilerinin nasıl oluşturulacağını ve kullanılacağını anlatan bir dizi örnek incelendi. Veritabanı işlemlerinin daha etkili ve özelleştirilebilir hale getirilmesini sağlayan tetikleyiciler, örneklerle detaylı bir şekilde açıklanmıştır. “kitap_before_update” tetikleyicisi ile güncellemelerin kitap sayfasına bağlı olarak öğrenci puanlarını otomatik güncelleme örneği ve “islem_before_insert” tetikleyicisi ile öğrencinin alınan ancak iade edilmemiş kitaplarını kontrol eden bir örnek sunulmuştur. Bu tetikleyiciler, veritabanı yönetiminde daha fazla kontrol ve bütünlük sağlamak için kullanılabilirler.

Yorum Yap

Yorum yapmak için tıklayın