Yazarlar Sözlük Makaleler Yardım Masası Gözlük Forum İstatistik

Tüm Başlıklar XML

1.  Bkz. trigger, stored procedure*

Trigger ile stored procedurelerin kimi ortak yönleri vardır.Bunlar
~Her iksi de veritabanı* nesne*sidir.
~Her ikisi de kullanılan veritabanının özel diliyle yazılır genelde(PL/SQL, T-SQL)
~Veritabanı nesnesi olduğundan, veritabanı ile taşınabilir.
~Her ikisi de vertabanı düzeyinde çalıştığı için hızlıdır*.
~Veri hattı üzerinde yoğunluk yaptırmadıkları için tercih edilirler. Bir stored procedure veya trigger in yapacağı komutları teker teker göndermek bir yoğunluk katar.
~ikisi de güvenlidir*. Güvenlikleri veritabanından kaynaklannır.

Bazı Farkları vardır.Bunlar:
~Trigger lar olay* güdümlü çalışır. Herhangi bir olay anında otomatik olarak çağırılır. Ama stored procedure ler oyle değildir. Kendiniz çağırmalısınız. (Stored procedureler kendini ağırdan alıyor, illa ki biri beni çağırsın diyor :-) )
~Trigger lar belirli bir tablo*ya bağlı çalışır genellikle. Tablolar üzerindeki insert, update ve delete işlemlerinden önce veya sonra çalışabilirler.(Kimi veritabanı yönetim sistemlerinde* farklı seviyelerde trigger lar yazılabilir. Örneğin Oracle için logon triggeri.) Stored procedureler için bu durum söz konusu değildir.
~Genellikle trigger lar veri bütünlüğünü* sağlamak için oluştururlur. Foreign key, primary key arasındaki ilişkiler bunlara örnek verilebilir.Stored procedure ler ise genellikle iş amaçlı yazılırlar.


Her ikisinin de bazı dezvantajları vardır. Bunlar:
~Test edilebilmeleri daha zordur.
~Birçok yazılımevi trigger ve stored procedure kullanılmaması yönünde eğilimlilerdir. Buradaki temel amaç, 3 katmanlı mimariden kaynaklanmaktadır. Business logic tamamen orta katmana bırakılmıştır.

Son olarak bu ikisinin ne zaman birbirleri yerine kullanılabileceğinin örneğini verelim. Hepiniz stok-sipariş sistemini bilirsiniz. Stoktan bir ürün satıldığı anda, yani faturalandığında, stoktan düşürülür. Ama önce ürünün yeterl miktarda olup olmadığı kontrol edilir. Ona göre ürün verilir.Bunu 3 farklı yol ile yapabilirsiniz:
1)Tamamen sql ile. Kullandığınız uygulama içinden bir command ile önce ürün var mı yok mu diye bakılır. İkinci bir command ile ürün verilir.

2)Bu işlemi yapmak için bir tane stored procedure çağırılır. Buradaki kod bloğunda önce ürün kontrol edilir, sonra verlilir. Arada isterseniz başka işlemler de yapabilirsiniz.(Örneğin ürün azalmış, yoneticiye* bildir gibi...)

3) Bu tablonun before(veya instead of ) insert ine bir tane trigger yazılır. Bu kontrolu kendisi yapar.


Benim şimdilik aklım gelenler bunlar.

mennan
31 Ağustos 2005 21:06
Bu konuda bildiklerinizi bizlerle paylaşabilirsiniz
Tabi bunun için yazarsanız giriş yapmalı, yazar değilseniz yazar olmalısınız.
© 2005, Bilişim Kulübü. (1140 ms)
Ne yapabilirsin: SubtitleClick ile İngilizceni Geliştir, Çınar Framework ile kod yaz, Eglencelik.org'ta biraz eğlen