Bana stok kontrolu yapan bi trigger lazım. Urunler tablosundaki her hangi bir ürünün stok adedi 20'nin altına düştüğü saman SatinAlinacakUrunler adındaki tabloya insert yapacak bi trigger lazım...
Ben şuan için buraya kadar geldim. Trigger içinde if kullanıyor muyuz??? Ayrıca @UrunId,@UrunAd,@StokAdet bunlar URUNLER tablosundan alınacak değerler...
Her satış yapıldığına trigger kontrol edicek kalan StokAdet 20'nin altına indi mi diye???
As Declare @UrunId as int, Declare @StokAdet as int, Declare @UrunAd as nvarchar(50)
Set @UrunId = select UrunId from urunler where urunId=@urunId, Set @UrunId = select UrunId from urunler where urunId=@urunId, Set @StokAdet = select stokadet from urunler where stokadet=@stokadet, Set @UrunAd= elect UrunAd from urunler where urunAd=@UrunAd
niye bir query ile stok adeti 20 altindaki urunleri secmeyi tercih etmiyorsun. select UrunId as SatinAlinacakUrunId, urunAd as SatinAlinacakUrunAd, StokAdet as SatinAlinacakUrunAdet from urunler where StokAdet < 20 gibi. trigger bir tablodaki degisiklikleri takip eder. (insert update delete) ve takip ettigi degisiklik meydana gelince triggerin icindeki kod calisir. simdi senin bu triggeri urunler tablona yerlestirip ordaki stokadedi ndeki degisikliklere gore satinalinacakurunler tablonu guncellemen gerekecek. yani satinalinacakurunler tablosuna koydugun trigger urunler tablosundaki stokadedi degisiklikleri sebebi ile calismaz. bir oku istersen ama onerdigim query i de bir dusun derim
niye bir query ile stok adeti 20 altindaki urunleri secmeyi tercih etmiyorsun. select UrunId as SatinAlinacakUrunId, urunAd as SatinAlinacakUrunAd, StokAdet as SatinAlinacakUrunAdet from urunler where StokAdet < 20 gibi. trigger bir tablodaki degisiklikleri takip eder. (insert update delete) ve takip ettigi degisiklik meydana gelince triggerin icindeki kod calisir. simdi senin bu triggeri urunler tablona yerlestirip ordaki stokadedi ndeki degisikliklere gore satinalinacakurunler tablonu guncellemen gerekecek. yani satinalinacakurunler tablosuna koydugun trigger urunler tablosundaki stokadedi degisiklikleri sebebi ile calismaz. bir oku istersen ama onerdigim query i de bir dusun derim
SQL ödevinde böyle bi şart var. İki adet trigger lazım. Birinci trigger, Satış Tablosuna yeni satış kaydı eklendiği zaman, Urunlerden Stok adeti düşmeli, ikinci trigger eger stok adet 20'nin altına indi ise SatinAlinacakUrunler tablosuna stok adeti düşen urunu eklemeli...
SQL Ödev; Sistem şirketin elindeki stokları kontrol edebiliyor olmalı.
urunler tablosunda stok adeti update olunca satinalinacaklar tablosunda yapilmasi gereken degisiklikleri yapacak triggeri ben yazayim, sen urunler tablosunda delete/insert islemleri olunca calismasi gereken triggeri yazarsin bakarak. simdi urunler tablosunda stok adeti kolonunda bir degisiklik olursa (ilk if); yeni stokadet 20 den dusukse ve satinalinacakurunler tablosunda o urun yoksa insert ediliyor(daha onceden satinalinacaklara eklenmis olabilir dolayisi ile yoksa insert etmek yeterli). yeni stokadet 20 ye esit veya buyukse ve satinalinacaklar tablosunda boyle bir urun varsa da delete ediliyor. *edit:bazi if satirlari tek satira sigmamis, onlari ayni satira yaz sorun cikmasin.
create trigger UpdateSatinAlinacaklarUrunler on dbo.Urunler after update as begin declare @urunid int select @urunid = UrunId from inserted declare @stokadet int select @stokadet = StokAdet from inserted declare @urunad nvarchar(50) select @urunad = UrunAd from inserted
if update(StokAdet) begin if(@stokadet < 20) and not exists(select UrunId from SatinAlinacakUrunler where SatinAlinacakUrunler.UrunId = @urunid) begin insert into SatinAlinacakUrunler values(@urunid, @urunad) end else if(@stokadet >= 20) and exists(select UrunId from SatinAlinacakUrunler where SatinAlinacakUrunler.UrunId = @urunid) begin delete from SatinAlinacakUrunler where SatinAlinacakUrunler.UrunId = @urunid end end end
< Bu mesaj bu kişi tarafından değiştirildi cs7 -- 28 Ağustos 2008; 23:00:42 >
Mrb, aşağıdaki sorguyu acaba doğru mu yazdım? Satislar tablosuna yeni kayıt eklendiği zaman, kaç adet ürün satıldıysa, ürünler tablosundan o kadar adet düşücek. (Satılan üründen)
dogru gibi duruyor (satisdetay tablonda stokadet diye bir kolon yok demi? son update de kolon isimleri karisabilir. kolonun basina ait oldugu tabloyu ekleyebilirsin.). tablolari sallama birkac deger ile doldurup denemeler yapabilirsin. bakarak herseyi goremeyebiliriz. ucuk kacik degerler vererek acaba ne olur diye calistiracagin queryler kodundaki hatalari gormeni kolaylastirir. mesela satisdetaydan 100 adetlik bir dusus yapilmasi istendi bu triggerdan. sorgusuz sualsiz yapar bunu bu trigger. halbuki stokda o kadar mal olmayabilir. (bu kontrolu baska yerde yapmadigini varsayiyorum.)
dogru gibi duruyor (satisdetay tablonda stokadet diye bir kolon yok demi? son update de kolon isimleri karisabilir. kolonun basina ait oldugu tabloyu ekleyebilirsin.). tablolari sallama birkac deger ile doldurup denemeler yapabilirsin. bakarak herseyi goremeyebiliriz. ucuk kacik degerler vererek acaba ne olur diye calistiracagin queryler kodundaki hatalari gormeni kolaylastirir. mesela satisdetaydan 100 adetlik bir dusus yapilmasi istendi bu triggerdan. sorgusuz sualsiz yapar bunu bu trigger. halbuki stokda o kadar mal olmayabilir. (bu kontrolu baska yerde yapmadigini varsayiyorum.)
Arkadaşım ben bu triggerları ve veritabanı backup dosyasını gönderdim hocaya... Bakalım kaç alıcam SQL ödevinden.
SatinAlinacakUrunler Tablosunda vs. sürükle bırak ile yaptığım için StokAdet vs. sütünlarda problem yok. Yani var...
Ben senin yazdığın tabloda gördüm. TabloAdi.SutunAdi bunu biz hiç boyle yazmamıştık. Sadece inner join sorgularında. Products as p >>>> p.firstname, p.lastname vs. diye gosterilmisti.