S.a arkadaşlar bugüne kadar hiç sp ve trigger kullanmadım son 3-4 gündür forumda yazılan makeleleri okuyup uyguluyorum hatta bu konuda fahrettin hocam ve fatih hocamın çok güzel makaleleri var benim sormak istediğim şey şu:
Carilerin kaydedildiği CARI tablosu
Ürün girişleri için URUN_GIRIS tablosu ve
Ürün çıkış/satış için URUN_CIKIS tablomuzun olduğunu varsayalım aralarında master detail ilişki olsa hangi cariye ne satış yada giriş yapıldığını görebiliriz fakat Fahrettin hocamın makalesindede olduğu gibi farklı zamanlarda aynı cari için ürün girişi yaptığımızda ürün miktarı yazdığımız sp ile artar ve azalırmı yoksa farklı farklı kayıt olarak mı görünür? Sorumu inşallah anlatabilmişimdir
Stored Procedure ve Trigger Hakkında?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Stored Procedure ve Trigger Hakkında?
- Devler Gibi İşler Yapmak İçin Karıncalar Gibi Çalışmak Lazım ...
Re: Stored Procedure ve Trigger Hakkında?
SP içinde inser görüyorsanız yeni kayıt olur, update varsa artar. ben makalelere bakmadım ancak Fahrettin hoca atlamaz, if yapısı koymuşta olabilir. kodu paylaşırsanız daha kolay yol gösterebiliriz sanırım.
Re: Stored Procedure ve Trigger Hakkında?
If yapısı kullanmış fakat benim dediğim gibi bi cari tablosu yok örnekte giriş tablosuna doğrudan değer girdiği için yazdığı sp gereği stok miktarı artıyo benim demek istediğim farklı zamanlarda farklı cariler için ürün girişi yapılırsa o cariye ait ürün girişlerine baktığımız zaman tek satırda toplam ürün miktarımı listenir yoksa her ürün girişi ayrı ayrı mı listelenir umarım anlatabilmişimdir. Fahrettin hocamın makalesindeki örnek:
Bir örnek ile hem trigger hem de stored procedure kullanımının teknik detayına inelim. Söyle bir örneğimiz olsun. Çok basit olarak bir URUN tablosu ve bu tabloda stok miktarı tutuluyor olsun. URUN_GIRIS ve URUN_SATIS seklinde 2 tane de ürünlerin hareketlerini tutacağımız farklı tablolar olsun. Tabloların yapısı şu şekilde olsun.
URUN (URUN_NO, URUN_ADI,STOK_MIKTARI)
URUN_GIRIS (URUN_NO, GIRIS_ZAMANI, GIRIS_MIKTARI)
URUN_SATIS (URUN_NO, SATIS_ZAMANI, SATIS_MIKTARI)
URUN_STOK (URUN_NO, STOK_MIKTARI)
Tabloları ilişkisel bir şekilde oluşturacak SQL kodu son bölümde ek olarak verilmiştir.
Şimdi yapmak istediğimizi açıklayalım. URUN_GIRIS tablosuna kayıtlar girdikçe yani bir üründen belirli miktarlarda girişler yapıldıkça o ürüne ait URUN tablosundaki STOK_MIKTARI alanının değerini giriş miktarı kadar arttırmalıyız. Tabi ki bunun tersi de olabilmeli yani yapılmış bir ürün girişi kaydı silinirse de bu sefer STOK_MIKTARI değeri silinen giriş kadar azaltılarak eski haline getirilmeli. Ve de eğer giriş miktarı diyelim ki 100 adet iken 50 adet olarak değiştirilirse de bu sefer bu duruma göre o ürünün STOK_MIKTARI alanı güncellenebilmeli. Bunu şu şekilde yapacağız. Öncelikle bir stored procedure yazacağız bu stored procedure’e parametre olarak URUN_NO ve GIRIS_MIKTARI’ nı göndereceğiz ve ilgili ürünün STOK_MIKTARI’ nı giriş miktarı kadar arttıracak. Yazdığımız bu stored procedure’ u de URUN_GIRIS tablosunun insert triggerından çağıracağız.
Insert triggerından çağıracağımız stored procedure’un adı SPI_URUN_GIRIS olsun. Bu procedur’un kodu şu şekildedir.
Kod: Tümünü seç
Interbase için CREATE PROCEDURE SPI_URUN_GIRIS ( URUN_NO INTEGER, GIRIS_MIKTARI INTEGER) AS DECLARE VARIABLE DLR_KAYIT_SAYISI integer; begin select count(*) from URUN_STOK where URUN_NO = :URUN_NO INTO DLR_KAYIT_SAYISI; if (DLR_KAYIT_SAYISI=0) then insert into URUN_STOK(URUN_NO,STOK_MIKTARI) values(:URUN_NO,0); update URUN_STOK set STOK_MIKTARI = STOK_MIKTARI+:GIRIS_MIKTARI where URUN_NO = :URUN_NO; End
- Devler Gibi İşler Yapmak İçin Karıncalar Gibi Çalışmak Lazım ...
Re: Stored Procedure ve Trigger Hakkında?
Mantiken urun hareketleri icin iki ayri table tutmanin dogru bir fikir oldugunu dusunmuyorum. Tek bir hareket tablosu tut ve hareket tipi diye bir Alan ekle. Isini bayagi kolaylastirir
Re: Stored Procedure ve Trigger Hakkında?
Örnek olarak verildiği için sorun yok @mrblt. @shochan URUN tablosunda her ürün için tek bir kayıt olacaktır. Oradaki if yapısıda zaten kaydın olup olmadığını sorguluyor (0 değeri dönerse kayıt yoktur). Fahrettin abi burada triggerları direk kullanmak yerine strored procedure kullanmayı tercih etmiş. Aslında direk triggerlarlada bu işlem yapılabilir. Triggerlar mevcut kayıt eklem silme,güncelleme işlemlerini hiç bir şekilde engellemez (engelleme amacıyla yazılmadıysa).
Re: Stored Procedure ve Trigger Hakkında?
Verdiğiniz bilgiler için teşekkür ederim şuan bilgisayarımda programlamaya dair bişey olmadığı için kafama takıldı sorma gereği duydum
herkese iyi çalışmalar 


- Devler Gibi İşler Yapmak İçin Karıncalar Gibi Çalışmak Lazım ...