SP Yi İnserten Trrigerdan çağırdık ama Update ?? Mantık

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
Kullanıcı avatarı
spoke25
Üye
Mesajlar: 434
Kayıt: 16 May 2005 04:06
Konum: Bolu

SP Yi İnserten Trrigerdan çağırdık ama Update ?? Mantık

Mesaj gönderen spoke25 »

Aşağıdaki Sp yi Bir tablonun after insert Trrigerndan çağırıp
birim fiyatı kdfv oranı v.s gibi bilghileri aldırıyorum.
Fakat Aynı triger içersinde Update işlemi yaptırdığım için ilgili tablonun Update trriger da çalışmıış oluyor. haliyle Yanlış veri girişi oluyor.

Kod: Tümünü seç

CREATE PROCEDURE FATURA_TO_GELEN_FATURA (
    URUN_NO INTEGER,
    GELEN_URUN_NO INTEGER,
    FATURA_NO INTEGER)
AS
DECLARE VARIABLE BIRIM_FIYAT NUMERIC(10,2);
DECLARE VARIABLE BIRIM VARCHAR(10) CHARACTER SET WIN1254;
DECLARE VARIABLE KDV_ORAN FLOAT;
DECLARE VARIABLE DEPO_NO INTEGER;
DECLARE VARIABLE ISLEM_TAR DATE;
DECLARE VARIABLE CARI_KOD INTEGER;
begin
  select birim_fiyat,birim,kdv from uruntbl
  where urun_kod=:urun_no into :birim_fiyat,:birim,:kdv_oran;

 select islem_tar,depo,cari_kod   from gelenfatura
  where gelenfatura.gelenfatura_kod=:fatura_no into :islem_tar,:depo_no,:cari_kod;

  update gelenfatura_urun
  set
   birim_fiyat=:birim_fiyat,
   birimi=:birim,
   kdv_oran=:kdv_oran,
   islem_tar=:islem_tar,
   depo=:depo_no,
   cari_kod=:cari_kod
   where  gelenfatura_urun.gelen_fatura_urun_kod=:gelen_urun_no;

  suspend;

end
Update trigerları için ise şöyle bir çağrı yapıyordum ama sanırım burası yanlış

Kod: Tümünü seç

  execute procedure spd_gelen_fatura_to_urun_hrkt(old.urun_kod,'Aftr',old.gelen_fatura_urun_kod);
  execute procedure spi_gelen_fatura_to_urun_hrkt(new.urun_kod,
  new.islem_tar,new.depo,'Aftr',new.gelen_fatura_kod,
new.gelen_fatura_urun_kod,new.miktar);
Update trigerlarına sp nin delete ve insert trigerlarını çalıştırıyororum.

Boyle olunca Çift kayıt gibi bir sorun oluyor.
yanlışım nerede?
Başlayan Herşey Birgün Bitmek Zorundadır.
Cevapla