iy içalışmalar arkadaşlar.bi tablom var ve bu tblomun before update inde bi triggerim var.tirggerımın kodu şu şekilde.
if (new.sonuc<>'')then execute procedure otoonay new.kod,new.mkod;
bu trigger sonuc tablosundaki sonuc alanına bi değer update edilince çalışıyor.ve başka bi tabloda bi alanı güncelliyor.yalnız burda şöyle bi sıkıntı
var.örn.tablodaki 100.kayıdın sonucu güncellendi güncellenince trigger procedure yi tetikledi ve b tablosundaki ilgili alanı güncelledi.yine aynı 100.satırdaki isim alanı güncellendiğindede yine bu trigger tetikleniyor ve gereksiz bi güncelleme çalışmış oluyor.yapmak istediğim şu sadece sonuç alanı güncellendiğinde bu procedure yi tetiklese .bunu nasıl yapabilirim.
before update trigger ı hakkında.
s.a.
Burada benim daha önce başıma gelen türden bir mesele var sanırım.
Aşağıdaki linki incelersen belki faydalı olabilir.
kolay gelsin.
viewtopic.php?t=21009
Burada benim daha önce başıma gelen türden bir mesele var sanırım.
Aşağıdaki linki incelersen belki faydalı olabilir.
kolay gelsin.
viewtopic.php?t=21009
Merhaba,meron06 yazdı:mustafa bey old.sonuc<>new.sonuc olayını denemiştim problem yaşamıştım.update etmesi gereken alanları update etmemişti.mecburen eski haline getirmiştim.bu coalesce olayını biraz açıklayabilirmiisniz.
Karşılaştırma ile herhangi bir sıkıntı çıkmaz, ben pek çok yerde kullanıyorum. Eğer sıkıntı çıkıyorsa null karşılaştırması gibi bir durumdan sıkıntı çıkıyordur.
Bir değerle null bir değeri karşılaştırırsanız, sonuç sizin istediğiniz gibi olmayabilir. Mesela AD diye varchar bir alan boşken 'Mustafa' değerini atadın, şöyle bir karşılaştırma sana istediğin sonucu vermez :
if (old.AD <> new.AD) then...
Bu tarz durumlarda ya her türlü şartı kontrol edeceksin, ya da coalesce ile null ifadeyi, istediğin tipte bir veriye çevireceksin. Colaesce verilen ifadeler içinde null olmayan ilk değeri döner. Mesela
coalesce(old.AD, '')
dersen, old.AD null ise sana boş string ('') döner. Dolayısıyla kolaylıkla karşılaştırma yapabilirsin. Eğer sayısal bir tipse
coalesce (old.Ad, 0)
gibi de kullanabilirsin.
Kolay gelsin.