MS SQL Trigger

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    lemonata
    lemonata's avatar
    Kayıt Tarihi: 14/Eylül/2005
    Erkek

    Arkadaşlar herkesler selamlar...

     

    Şöyle bir problemim var ve iş biraz karmaşık olduğundan işin içinden çıkmakta zorlanıyorum

     

    Yazdığım Programda Urunler ve Stok adında 2 tablom var;

     

    Urunler de  o ururnun genel ozelliklerini ve stok adedini,

    Stok da ise seri numarası , urun adı , giriş çıkış tarihi ve Durum bilgilerini tutuyorum...

     

     

    Stok a herhangi bir ürün kaydettiğim de ;

     

    Kaydettiğimk Ürünün Urun tablosunun Adet kolonunda "1" arttıran bir trigger yazdım;

     

    trigger şu şekilde;

     

    USE [CRMM]
    GO

    /****** Object:  Trigger [dbo].[StokGuncelle]    Script Date: 11/16/2011 08:55:38 ******/
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    CREATE TRIGGER [dbo].[StokInsert]
    ON [dbo].[Stok]
    FOR INSERT
    AS
    --IF EXISTS(
    --SELECT Adet
    --FROM Urun A INNER JOIN
    --inserted i ON A.UreticiID = i.ArtNo
    --where A.Stok < i.Adet)
    --BEGIN
    --ROLLBACK TRANSACTION
    --RAISERROR('Stoğu aştınız',16,1)
    --END
    --ELSE
    UPDATE Urun
    SET Adet=(Adet + 1)
    FROM Urun A INNER JOIN
    inserted i ON A.UreticiID = i.ArtNo

    UPDATE Stok
    SET --GirisT=SYSDATETIME(),
    Durum='0'
    FROM Stok B INNER JOIN
    inserted i ON B.SeriNo = i.SeriNo
    GO


     

    İstiyorum ki;

     

    Stok tablosundak bir ürünün güncellediğimde;

     

    Durum kolonuna baksın,

    ve Bu ürün güncellenmeden öncekş değeri "0" dan farklı bir değer e gitti ise,

     

    Bir baika trigger  Urun tablosunun İlgili satırırnın Adet bilgisini 1 düşürsün...

     

     

    Bu konuda yardımlarınızı bekliyorum....

     

     

    iyi günler....


    vallaha bilmiyorum.....
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    amele_2
    amele_2's avatar
    Kayıt Tarihi: 01/Eylül/2005
    Erkek

    up


    Ardından yüz köpek havlamayan kurt, kurt sayılmaz..
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    lemonata
    lemonata's avatar
    Kayıt Tarihi: 14/Eylül/2005
    Erkek

    USE [CRMM]
    GO
    CREATE TRIGGER StokUpdate
    ON Stok
    AFTER UPDATE AS
    DECLARE @DurumEski varchar, @DurumYeni varchar, @UrunID int
    SELECT @DurumYeni=i.Durum FROM inserted i
    SELECT @DurumEski=d.Durum FROM deleted d
    SELECT @UrunID=i.UrunID FROM inserted i
    IF (@DurumEski='0' AND @DurumYeni!='0')
    BEGIN
    UPDATE Urun
    SET Adet=(Adet-1)
    WHERE @UrunID=Urun.UrunID
    END
    ELSE IF(@DurumEski!='0' AND @DurumYeni='0')
    BEGIN
    UPDATE Urun
    SET Adet=(Adet+1)
    WHERE @UrunID=Urun.UrunID
    END

     

     

    Şeklinde çözüme ulaştım arkadaşlar,

     

     

     

    bilginize

     

    ....


    vallaha bilmiyorum.....
Toplam Hit: 975 Toplam Mesaj: 3