Update Trigger Çalışmıyor..

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Berdem
Üye
Mesajlar: 431
Kayıt: 28 Tem 2003 12:28

Update Trigger Çalışmıyor..

Mesaj gönderen Berdem »

Merhaba,
Aşağıdaki trigger çalışmıyor.Hata mesajı almıyorum.Kısacası rapor sayısı dolu olduğu halde ibexpertte update yapmaya devam ediyor.Yardımlarınızı bekliyorum.

Kod: Tümünü seç

CREATE TRIGGER ILKRAPOR_BU0 FOR ILKRAPOR
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
 if (ilkrapor.rapor_sayisi is not null) then exit;
end
Ali Erdoğan
Kıdemli Üye
Mesajlar: 1026
Kayıt: 11 Şub 2005 02:12
Konum: İstanbul

Mesaj gönderen Ali Erdoğan »

Hocam zaten bu trigger çalışsa bile yaptığı bir şey yok ki. Çalıştığını nasıl anlayacaksınız?
Berdem
Üye
Mesajlar: 431
Kayıt: 28 Tem 2003 12:28

Mesaj gönderen Berdem »

:D Sevgili Ali yapmak istediğim ilkrapor diye table var.Bu tabloya doktorlar giriş yapıyor.Bu girişlere göre rapor bölümü çıktı sayı veriyor.Rapor bölümü sayı verdikten sonra hekimlerin bu bölümde tekrar güncelleme yapmalarını engellemek istiyorum.Kısacası tablonun iki farklı kullanıcısı var a kullancısı insert yapıyor b kullanıcısı tablonun boş alanlarını güncelliyor.Güncelleme bittikten sonra a kullanıcısı güncelleme yapmasın....
Bu nu delphi tarafında yapabiliyorum işi bayagı uzatıyor.Firebird tarafında kestirme yoldan yapabilirmiyim diye çabaladım fakat olmadı.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Buradaki exit olayı ile sadece Trigger de başka işlem yapmayıp bitirmeyi sağlayabilirsiniz :!: Eğer bazı alanların değişmesini istemiyorsanız ya delphi taraftan salt-okunur halde ya da pasif/enabled=false olarak ekrana getirteceksiniz ya da After Update trigger i ile verdiğiniz şart/koşul sağlanıyorsa yeni değeri kale almayıp eski değerlere update edebilirsiniz :idea:

Kod: Tümünü seç

CREATE TRIGGER ILKRAPOR_AU0 FOR ILKRAPOR
ACTIVE AFTER UPDATE POSITION 0
AS
begin
 if (ilkrapor.rapor_sayisi is not null) then -- alan değişikliği olmayacak koşul
  update ilkrapor set alan_adi = old.alan_adi
  where ilgili_kayıt; -- sözkonusu kayıtı gösteren şart!
end
Ezberden yazdım, çok emin olmamakla beraber böyle bir şey ile çözülebilir kanaatindeyim :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
exception ile halledebilrisin.
update yapmasını istemediğin yerde exception kullanarak hem kullanıcıyı bilgilendirmide olursun.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Berdem
Üye
Mesajlar: 431
Kayıt: 28 Tem 2003 12:28

Mesaj gönderen Berdem »

İnsan gözdür, görüştür, gerisi ettir. İnsanın gözü neyi görüyorsa, değeri o kadardır. Hz. Mevlana Aklıma bu söz geldi.Yardımlarınız için çok teşekkürler...
Cevapla