IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası
  sohbet

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 16 Ekim 2014, 15:15   #1
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
MySQL ile Trigger Oluşturma




Triggerlar ilişkili veri tabanlarında çok önemli özelliklerden bir tanesidir. Trigger'ın anlamı tetikleyici olarak bilinmektedir. Herhangi bir olay gerçekleştiğinde neleri tetikleyeceğinin belirlendiği ve tetiklenme ile nelerin yapılacağının belirtildiği bir SQL kodudur diyebiliriz.

2 çeşit trigger vardır diyebiliriz. Bunlar:

1- Insert, Update, Delete işlemleri esnasında (öncesi-sonrası) tetiklenmesi ayarlanan triggerlar.

2- Create, Drop, Alter işlemleri öncesi ve sonrasında tetiklenmek için hazırlanan triggerlardır.

İlk trigger türünü bir örnek üzerinde açıklayacak olursak:

İlk önce bir tablo oluşturalım.

MySQL> CREATE TABLE uyelik(no INT, ucret DECIMAL(10,2));



Bu tablomuzda "no" isminde int tipinde bir değişken ile "ucret" isminde decimal değerde virgülden sonra iki sayının gösterebileceği değişkenler bulunmaktadır.

MySQL> CREATE TRIGGER ins_uye BEFORE INSERT ON uyelik

FOR EACH ROW SET @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]uc = @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]uc + NEW.ucret;



Bu SQL kodumuzda "ins_uye" ismi ile bir trigger oluşturduk. Bunu uyelik tablosunu baz alarak "BEFORE INSERT ON" tetikleyicisini belirttik. Burada "BEFORE INSERT ON" = "Tabloya bir satır ekleme öncesi" koşulunu belirledik. "FOR EACH ROW SET" kelimeleri ile "@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]uc = @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]uc + NEW.ucret" işlemini her bir ekleme gerçekleştiğinde var olan sonuc değerine yeni eklenen satırdaki ucret değerinin eklenmesi söylenir.

Tablomuza birkaç veri ekleyerek sonucu görelim:

MySQL> SET @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]uc = 0;

MySQL> INSERT INTO uyelik VALUES(15,155.21),(25,526.45),(35,-500.00);

MySQL> SELECT @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]uc AS 'Toplam Eklenen Ucret';

+----------------------+

| Toplam Eklenen Ucret |

+----------------------+

| 181.66 |

+----------------------+



Update komutu ile güncelleme üzerine bir trigger belirleyelim:



MySQL> delimiter //

MySQL> CREATE TRIGGER upd_check BEFORE UPDATE ON uyelik

FOR EACH ROW

BEGIN

IF NEW.ucret < 0 THEN

SET NEW.ucret = 0;

ELSEIF NEW.ucret > 100 THEN

SET NEW.ucret = 100;

END IF;

END
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
/

MySQL> delimiter ;



Burada delimiter komutu kod bloğunun ayracı olarak kullanılmaktadır. "upd_check" isminde bir trigger oluşturup uyelik tablosunu baz alarak update işlemi yapacağımızı belirtmişiz. Sonrasında yapılacak işlemlere başlangıç olarak begin komutu ile başlamışız. Gerekli koşullarımızı girdikten sonra koşullar ve bloklar için kapatma komutlarını girip delimiter' ı da sonlandırıp trigger oluşturma işlemimizi bitiriyoruz.



MySQL> update uyelik set ucret='129.12' where ucret='155.21';



Yukarıdaki SQL cümleciği, uyelik tablosu içerisinde ucret değeri 155.21 olan değeri değiştirerek 129.12 yapmak için oluşturulmuştur fakat oluşturduğumuz kısıtlama sebebi ile 129.12 değeri yerine 100.00 değeri tablomuza eklenecektir. Select komutu ile tablomuzu görmeye çalıştığımızda çıktımız şu şekilde olacaktır:



+------+---------+

| no | ucret |

+------+---------+

| 15 | 100.00 |

| 25 | 526.45 |

| 35 | -500.00 |

+------+---------+



Bu trigger güncelleme (update) işlemi sırasında eğer güncellenen ucret değeri 0 değerinden küçük ise değeri 0'a eşitleyip gerekli yere ekliyor. 100'den büyük girildiğinde ise 100 değerine eşitleyip gerekli yere ekleme yapıyor.



Oluşturduğunuz triggerları ve ayarlamalarını görmek için;

MySQL> show triggers; //yazmanız yeterli olacaktır...



Oluşturulan triggerları kaldırmak için tablolarda yaptığımız gibi DROP SQL komutunu kullanmamız gerekecektir;

MySQL> DROP TRIGGER upd_check;

__________________
Bu kez pek bir afili yalnızlık, ağlatan bir kadın kadar düşman. Ağzı bozuk üstelik bırakmıyor acıtmadan.
 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları sohbet odaları Benimmekan Mobil Sohbet
Cevapla

Etiketler
ile, mysql, oluşturma, trigger


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Mysql de trigger hAte MySQL 0 09 Ekim 2014 04:28
MySQL Nedir ve MySQL C++ Builder Bağlantısı Nasıl Yapılır Swat MySQL 0 01 Temmuz 2014 12:59