Konular

MySQL ve Triggerlar

MySQL 5. 0 alpha'ya kadar trigger desteği bulunmayan bir veritabanı yönetim sistemi olduğundan çoğu kez bu nedenle çocukça bir uğraş olarak görülmüştür - abartmıyorum. Yeni sürümlerine entegre edilen trigger desteği sayesinde MySQL severler oldukça büyük bir huzura kavuşmuştur
TRIGGER NEDİR? 

İlk cevaplamamız gereken soru bu. Trigger'lar ilişkisel veri tabanlarıda belirli bir olay/durum ortaya çıktığında belirli bir işin yapılmasını sağlayan özelliklerdir. Bu işler daha önce yaratılmalı ve veritabanında saklanmalıdır.

Peki, bu prosedür ve işlemleri nerede kullanabiliriz? Hemen, örnek bir olay yaratalım. Mesela bir blogumuz olsun ve bu blogda yazıları ve yorumları tutan iki tane tablo olsun. Yazılar tablosunun aşağıdaki yapıda olduğunu farzedelim:

www.dijitalders.com

Posts Tablosu

Yazılar dışında bir de yorumları sakladığımız bir "comments" tablosu var demiştim. Bu tablonun yapısı ise basitçe aşağıdaki gibi olsun.

Comments tablosu

Comments üzerindeki parent_id, posts tablosundaki id'yi referans ediyor ve yorumun hangi yazı için yazıldığını belirliyor. Blogumuza her yeni yorum eklendikten sonra posts tablosundaki "count"un artması isteriz, her yorum silindiğinde ise azaltılmasını. Böyle bir durumda programlamaya başvurarak bu işi halledebiliriz, ama program dışında birileri direkten database üzerinden bir yorum silmek isterse, ayrıca manuel olarak "count" değerini de değiştirmesi gerekecektir. Bu işkenceye son vermek amacıyla trigger'lar yaratılabilinir. Aşağıda her yorum eklendiğinde ona ait yazının count'unu bir arttıran bir trigger nasıl yaratılır bunu inceleyeceğiz.
PLAIN TEXT
SQL:

   1.
      DELIMITER |
   2.
      CREATE TRIGGER mytrigger AFTER INSERT ON comments
   3.
      FOR EACH ROW BEGIN
   4.
      UPDATE posts SET count = count + 1 WHERE id = NEW.parent_id;
   5.
      END;
   6.
      | DELIMITER ;

Gördüğünüz trigger yaratma sorgusunda ilgi çeken ana hatlardan ilki "AFTER INSERT ON", bu sayede yeni yorum eklendikten sonra yapılacak bir işlem belirlemek istediğimizi belirtiyoruz. Bu anahtar kelimenin birçok versiyonu mevcut. Bu sayede hangi işlemden (DELETE, UPDATE, INSERT) önce/sonra (AFTER/BEFORE) ne yapılmasını istediğimizi emredebiliyoruz.

İkinci ilginç ve yeni kelime "NEW". NEW yeni eklenen satırı referans ediyor. Bu sayede yeni satırın istediğiniz özelliğine ulaşabiliyorsunuz. Silmelerde "NEW" yerine "OLD" kullanıldığını da ekleyeyim.

İşte hepsi bu kadar, bu trigger yaratıldıktan sonra, her yorum eklenişinde sizin programlamanız gereken kısım otomatik olarak veritabanı tarafından halledilecektir.

İlk alıştırma olarak, bu örnekte basitçe bir eklediğimiz "count"u yeniden saymayı deneyebilirsiniz. Her eklenişte ve silinişte aslında en mantıklısı yeniden tüm o yazıya ait yorumları saymaktır, ama ben kolaya kaçıyorum

tirigırların dez avantajlarıda var; olay ve tablo bazında sadece bir tirigır kullanabilirsiniz, ayrıca bu tirigırada birden fazla olay ekleyemezsiniz

Kaynak www.burcudogan.com/mysql-ve-triggerlar-76.html

Yorumunuzu Ekleyin

Mysql Türkçe Karakter Problemi

Php+Mysql Tabanlı Site Tasarımları hazırlayan yeni arkadaşların en büyük problemleridir, Mysql 4 üzerindeki karakter problemleri. Bu sadece Mysql 4 üzerinde oluşan bir durum. Yani Mysql 4'ler üstünde karakter kodlama seçenekleri söz konusu. Ayrıca türkçe karakter içeren sıralamalardada sorunlar çıkmaktadır.

53,797 Okunma 2 Yorum 14/04/2007 14:32:06 09/12/2014 14:32:21

Mysql Veri Tipleri

Mysqlde kullanılabilecek veri tipleri, anlamları ve alabilecekleri değerler

34,757 Okunma 2 Yorum 10/03/2008 20:27:44

Mysql Tablo Türleri

MyISAM, InnoDB...

24,998 Okunma Henüz yorum yapılmamış 13/10/2008 14:44:29 09/12/2014 14:45:36

Mysql field tipleri

22,440 Okunma Henüz yorum yapılmamış 03/03/2008 10:46:06 11/01/2019 21:01:16

Mysql İle Türkçe Karakter Sıralaması

Yeni sürüm mysql veritabanlarında karakter kodları var bildiğiniz üzere. Çoğu kişi için sıkıntı olduğu düşünülse de, aslında tam tersi karakter kodları sayesinde veritabanımız daha hızlı çalışıyor ve gördüğünüz bu tarzda sıralama işlemlerini başarıyla yapabiliyoruz.

21,597 Okunma Henüz yorum yapılmamış 04/09/2008 18:22:12

Kalıcı Bağlantılı Veritabanı Bağlantıları (Persitent Connections)

Kalıcı bağlantılar betiğinizin çalışması bittiğinde kapanmayan bağlantılardır. Bir kalıcı bağlantı istendiğinde PHP evvelce açılmış eşdeğer bir kalıcı bağlantı var mı diye bakar ve varsa onu kullanır. Yoksa yeni bir bağlantı oluşturur. Bir 'eşdeğer' bağlantı, aynı konağa (uygulanabildiği takdirde) aynı kullanıcı adı ve parola kullanılarak açılmış bağlantıdır.

12,038 Okunma Henüz yorum yapılmamış 08/12/2014 11:11:14 08/12/2014 11:33:49

Yükleniyor...