CREATE TRIGGER GIRIS FOR FUELOIL_GIRIS
ACTIVE BEFORE INSERT POSITION 0
AS
begin update fueloil_giris
set fueloil_giris.gelen= fueloil_giris.gelen / (select d_carpan.deger from d_carpan where d_carpan.turu='fueloil');
end
yukarıdaki trigeri update özelliğinide girersem sonsuz döngüye giriyor bunu nasıl önlerim
Yapmak istediğim tam olarak kayıt değişikliğinde değişen veya yeni eklenen kaydı diğer bir tablodaki değere bölmek yani birim dönüşümü gelen miktar ton cinsinden yazılıp carpan tablosundaki katsayıya bölmek ( bu şekilde tank cinsinden % hesabı yapıyorum yani gelen 3000 ton yakıt tankın %50 si yapıyor gibi.)
INSERT olayının anlık öncesinde (Before Insert te henüz yeni boş kayıt eklenmeden öncesi) veya sonrasında (After Insert te yeni boş bir kayıt eklendi) sadece tabloda boş bir kayıt olacağından bu tür bir işlemi bu şekilde yaptıramazsınız Buradaki BEFORE INSERT yerine AFTER INSERT olunca tablodaki alanlara bilgi atanabilir. Fakat bu şekilde de yine sizin üzerinde işlem yapacağınız alanda bilgi olmadığından işe yaramıyacaktır. Çözüm: bu trigger AFTER UPDATE olarak değiştirip, delphi içinden kayıttan sonra;
sayın hocam yukarıda verdiğim kod sorunsuz çalışıyor fakat bu koda before update eklersem sonsuz bir döngüye giriyor. Zaten trigger alanın değerini değiştiridiği için tekrar update etmiş oluyor ve bu sürekli devam ediyor. Firebird kulanmamdaki amacım herhangi bir hesaplamayı program ara yüzünden ayrı tutmak ve kendimi FB de geliştirmekti. Programım tek kullanıcılı olacağı için FB belkide gereksiz diye düşüne bilirsiniz. Paradoxlada çözülebilirdi. ama asıl amacım FB de kendimi geliştirmek ve bütün hesaplamaları ve diğer tablo lar ile bağlantılı güncelleştirmeleri Server tarafında çözmek yani sizi benim programımı kullanmadan veri girişi veya değişikliği yapsanız dahi proje bütünlüğü bozulmaması Ayrıca sizden ricam (Sanırım ben anlatmak istediğinizi tam olarak anlayamadım.) biraz daha basit bir dille anlatmanız. Buradaki ana sorun yukarıdaki hesaplamanın update olayı sonrasında da sorunsuz çalışması ama ana problem update ten sonra tetiklene olayında bir update gerçekleştirmesi ve sonsuz döngü sadece FB tarafında bir çözüm var ise onu kullanmak istiyorum. (En basiti dephide prog tarafında hesaplamayı yapıp sonucu vt ye atmak olurdu ama bu çözüm vt ye başka bir yolla veri girişi yapıldığında veri bütünlüğünün bozulmasına sebep olacak) Saygılarımla İsmail YILDIRIM
CREATE TRIGGER GIRIS FOR FUELOIL_GIRIS
ACTIVE BEFORE INSERT POSITION 0
AS
begin
NEW.gelen= NEW.gelen / (select d_carpan.deger from d_carpan where d_carpan.turu='fueloil') ;
end