MySQL de Trigger uygulaması

Veritabanı odaklı uygulama geliştir iken, bazen gerçekleşen değişleri takip edilmesi gerekir. İşte o noktada bir veritabanı nesnesi olan tetikleyicileri(Trigger) kullanırız. Bu özelikle bir çok veritabanında olduğunu gibi MySql 5.0 versiyonunda karşımıza çıkmaktadır.

Mysql ‘de trigger nesneleri iki çeşit olarak bulunmaktadır.

  • Veritabanında nesneler üzeride yapılan değişikler için(Drop,Create,Alter),
  • Tablolar içersinde bulundukları kayıtlar, içerisinde yalpan değişler (Insert,Update,Delete)için kullanır.

Bu yazımda tablolar üzerine deki değişimleri inceleyebileceğimizi tetikleyici(trigger) inceleceğim.

Bu uygulamazda insert trigger kullanacağız. İlk olarak uygulama içerisinde kullanacağımız tabloları oluşturalım. Kayıtlar üzerinde yapan değişimleri takip eden bir trigger geliştirelim.

Product tablosu

CREATE TABLE `product` (
  `Id` int(11) NOT NULL auto_increment,
  `ProductName` varchar(255) default NULL,
  `Prices` decimal(10,2) default NULL,
  PRIMARY KEY  (`Id`)
)

State tablosu

CREATE TABLE `state` (
  `Id` int(11) NOT NULL auto_increment,
  `ProductID` int(11) default NULL,
  `RecordDate` datetime default NULL,
  PRIMARY KEY  (`Id`)
)

Şimdi uygulayacağımız senaryodan bahsetmek istiyorum.Product(ürün) tablosuna her kayıt eklediğinde State(Durum) tablosuna product ile ilgili ID ve kayıt tarihi eklenmektedir.Aslında .net de sihirbazla yaptığımız cache sistemine benzeye bir olay hazırlamaktayız.

CREATE TRIGGER [TRIGGER adı] [hangi olayda çalışacağı | insert | update | delete ]
    ON [izlenecek olan tablo adı ] FOR EACH ROW [ tabloda bulunan değişikleri alabilceğiz degşikeni tanımladığı yer]

Yukarıdaki yazım şekline uyarak kullanacağımız trigger hazırlayalım.

Create TRIGGER trg_Product_int
BEFORE INSERT ON product  
    FOR EACH ROW SET @ProductID=New.ID
    insert into state(ProductID,RecordDate) VALUES(@ProductID,NOW())
   

Hazırlamış olduğumuz insert trigger’dır. Yani kayıt eklediğinde çalışan.

Öneri :

Hazırlamış olduğumuz veritabanı nesnelerinde yukarıdaki örnekte de olduğu gibi nesnenin ne olduğu anlatan kısaltmalar koymayı unutmayın

Tetikleyicileri konu alan yazımız burada sonları iken konu ile ilgili sorunlarını iletişim bölümünde iletebilirsiniz.

IBRAHIM ATAY

Leave a Reply

Your email address will not be published. Required fields are marked *