MS SQL Trigger
-
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....
-
up
-
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
....
