Update Trigger Hk.

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
barutali
Üye
Mesajlar: 297
Kayıt: 02 Tem 2007 02:30

Update Trigger Hk.

Mesaj gönderen barutali »

Merhabalar..
Aşağıdaki gibi bir UPDATE Trigger ım var. Fakat çalışmıyor. Yani hiç bir hata vermiyor. Ara ara SubQuery hatası veriyordu artık onuda vermiyor.

yapmak istediğim şey irsaliyede ki kalemler güncellendiğinde stok hareketindeki kaydın da güncellenmesi.
teşekkürler.

Kod: Tümünü seç

SET NOCOUNT ON
DECLARE
@ISLEM NVARCHAR(50),
@YENIMIKTAR FLOAT,
@ESKIMIKTAR FLOAT,
@KODU INT

set @ESKIMIKTAR = (SELECT MIKTAR FROM DELETED)
set @ISLEM      = (SELECT ISLEM FROM INSERTED)
set @YENIMIKTAR = (SELECT MIKTAR FROM INSERTED)
set @KODU       = (SELECT ID FROM DELETED)

DECLARE DEBUGGER CURSOR DYNAMIC FOR

SELECT * FROM TBLSTOKHAREKET WHERE TBLSTOKHAREKET.FATDID in (@KODU)

OPEN DEBUGGER
WHILE @@FETCH_STATUS <> -1
BEGIN
FETCH NEXT FROM DEBUGGER



        if @ISLEM = 'Mal Alış İrsaliyesi'
        begin
        UPDATE TBLSTOKHAREKET SET
        TBLSTOKHAREKET.GIREN = (TBLSTOKHAREKET.GIREN - @ESKIMIKTAR + @YENIMIKTAR) 
        WHERE CURRENT OF DEBUGGER
        FETCH NEXT FROM  DEBUGGER   
        end
         Else
          if @ISLEM = 'Toptan Satış İrsaliyesi'
          Begin
            UPDATE TBLSTOKHAREKET SET
            TBLSTOKHAREKET.CIKAN = (TBLSTOKHAREKET.CIKAN - @ESKIMIKTAR + @YENIMIKTAR)
            WHERE CURRENT OF DEBUGGER
            FETCH NEXT FROM  DEBUGGER 
          end
           else
            if @ISLEM = 'Perakende Satış İrsaliyesi'
            Begin
              UPDATE TBLSTOKHAREKET SET
              TBLSTOKHAREKET.CIKAN = (TBLSTOKHAREKET.CIKAN - @ESKIMIKTAR + @YENIMIKTAR)
              WHERE CURRENT OF DEBUGGER
              FETCH NEXT FROM  DEBUGGER 
            end
             else 
              if @ISLEM = 'Mal Alış İadesi'
              Begin
                UPDATE TBLSTOKHAREKET SET
                TBLSTOKHAREKET.CIKAN = (TBLSTOKHAREKET.CIKAN - @ESKIMIKTAR + @YENIMIKTAR)  
                WHERE CURRENT OF DEBUGGER
                FETCH NEXT FROM  DEBUGGER 
              end
               else 
                if @ISLEM = 'Toptan Satış İadesi'
                 Begin
                    UPDATE TBLSTOKHAREKET SET
                    TBLSTOKHAREKET.GIREN = (TBLSTOKHAREKET.GIREN - @ESKIMIKTAR + @YENIMIKTAR)
                    WHERE CURRENT OF DEBUGGER
                    FETCH NEXT FROM  DEBUGGER 
                 end
                  else
                   if @ISLEM = 'Perakende Satış İadesi'
                   Begin
                      UPDATE TBLSTOKHAREKET SET
                      TBLSTOKHAREKET.GIREN = (TBLSTOKHAREKET.GIREN - @ESKIMIKTAR + @YENIMIKTAR)
                   WHERE CURRENT OF DEBUGGER
                   FETCH NEXT FROM  DEBUGGER 
                   end;                            
END

CLOSE DEBUGGER
DEALLOCATE DEBUGGER
amatör küme programcı :D
Kullanıcı avatarı
barutali
Üye
Mesajlar: 297
Kayıt: 02 Tem 2007 02:30

Re: Update Trigger Hk.

Mesaj gönderen barutali »

Sorunumu aşağıdaki gibi çözmüş bulunmaktayım belki yardımcı olur..

Kod: Tümünü seç

SET NOCOUNT ON
DECLARE
@ISLEM NVARCHAR(50),
@YENIMIKTAR FLOAT,
@ESKIMIKTAR FLOAT,
@KODU INT

Select @ESKIMIKTAR = MIKTAR, @KODU = ID FROM DELETED;
Select @ISLEM = ISLEM, @KODU = ID From INSERTED; 
Select @YENIMIKTAR = MIKTAR, @KODU = ID FROM INSERTED;


        if @ISLEM = 'Mal Alış İrsaliyesi'
        begin
        UPDATE TBLSTOKHAREKET SET
        TBLSTOKHAREKET.GIREN = (TBLSTOKHAREKET.GIREN - @ESKIMIKTAR + @YENIMIKTAR)
        where 
        TBLSTOKHAREKET.FATDID = @KODU   
        end
         Else
          if @ISLEM = 'Toptan Satış İrsaliyesi'
          Begin
            UPDATE TBLSTOKHAREKET SET
            TBLSTOKHAREKET.CIKAN = (TBLSTOKHAREKET.CIKAN - @ESKIMIKTAR + @YENIMIKTAR)
            where 
            TBLSTOKHAREKET.FATDID = @KODU 
          end
           else
            if @ISLEM = 'Perakende Satış İrsaliyesi'
            Begin
              UPDATE TBLSTOKHAREKET SET
              TBLSTOKHAREKET.CIKAN = (TBLSTOKHAREKET.CIKAN - @ESKIMIKTAR + @YENIMIKTAR) 
              where 
              TBLSTOKHAREKET.FATDID = @KODU 
            end
             else 
              if @ISLEM = 'Mal Alış İadesi'
              Begin
                UPDATE TBLSTOKHAREKET SET
                TBLSTOKHAREKET.CIKAN = (TBLSTOKHAREKET.CIKAN - @ESKIMIKTAR + @YENIMIKTAR)
                where 
                TBLSTOKHAREKET.FATDID = @KODU   
              end
               else 
                if @ISLEM = 'Toptan Satış İadesi'
                 Begin
                    UPDATE TBLSTOKHAREKET SET
                    TBLSTOKHAREKET.GIREN = (TBLSTOKHAREKET.GIREN - @ESKIMIKTAR + @YENIMIKTAR)
                    where 
                    TBLSTOKHAREKET.FATDID = @KODU 
                 end
                  else
                   if @ISLEM = 'Perakende Satış İadesi'
                   Begin
                      UPDATE TBLSTOKHAREKET SET
                      TBLSTOKHAREKET.GIREN = (TBLSTOKHAREKET.GIREN - @ESKIMIKTAR + @YENIMIKTAR)
                      where 
                      TBLSTOKHAREKET.FATDID = @KODU 
                   end;   
                   
amatör küme programcı :D
Cevapla