Delphi Can
[Çözüldü] Trigger çalışmaması hk. - Baskı Önizleme

+- Delphi Can (http://www.delphican.com)
+-- Forum: Veri Tabanı (http://www.delphican.com/forumdisplay.php?fid=4)
+--- Forum: MS SQL Server (http://www.delphican.com/forumdisplay.php?fid=103)
+--- Konu Başlığı: [Çözüldü] Trigger çalışmaması hk. (/showthread.php?tid=3723)



[Çözüldü] Trigger çalışmaması hk. - cinarbil - 12-06-2019

İyi günler.
Aşağıdaki triggeri  stokHareket dosyasına oluşturdum sql management ten oluşan trigger i görebiliyorum.

CREATE TRIGGER Stok_Giris ON StokHareket
AFTER INSERT
AS
 DECLARE @Hrkid INT
 DECLARE @miktar FLOAT
 SELECT @Hrkid = ST_STOKID, @miktar = ST_MIKTAR  FROM inserted
 UPDATE Stok SET STOK_TOP_GRN = STOK_TOP_GRN+@miktar 
 WHERE STOK_ID=@Hrkid

sql management ile veya programdan insert yaparak hareket eklediğim halde STOK_TOP_GRN  alanı değişmiyor

trigger içindeki işlemleri çalışırken görebilir miyim
trigger tetiklendi, @Hrkid   aldığı değer gibi


Cvp: Trigger çalışmaması hk. - hi_selamlar - 12-06-2019

(12-06-2019, Saat: 15:31)cinarbil Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.İyi günler.
Aşağıdaki triggeri  stokHareket dosyasına oluşturdum sql management ten oluşan trigger i görebiliyorum.

CREATE TRIGGER Stok_Giris ON StokHareket
AFTER INSERT
AS
 DECLARE @Hrkid INT
 DECLARE @miktar FLOAT
 SELECT @Hrkid = ST_STOKID, @miktar = ST_MIKTAR  FROM inserted
 UPDATE Stok SET STOK_TOP_GRN = STOK_TOP_GRN+@miktar 
 WHERE STOK_ID=@Hrkid

sql management ile veya programdan insert yaparak hareket eklediğim halde STOK_TOP_GRN  alanı değişmiyor

trigger içindeki işlemleri çalışırken görebilir miyim
trigger tetiklendi, @Hrkid   aldığı değer gibi

Merhabalar,

Değişkenlere atmaktansa direkt + olarak ilave etseniz.

MS SQL olmadığı için test etme imkanım yok. Ama mantıken çalışması gerekli diye düşünüyorum.


UPDATE Stok 
SET 
 STOK_TOP_GRN = STOK_TOP_GRN+ST_MIKTAR  
WHERE
 STOK_ID = ST_STOKID;

Birde STOK_TOP_GRN Field Default "0" olarak ayarlayın.

Kolay gelsin.


Trigger çalışmaması hk. - r3n4m3 - 12-06-2019

Normalde calismasi lazım ama aynı kullanacaksan boyle bir dene

CREATE TRIGGER TRG_Stok_Giris ON [StokHareket]
FOR INSERT
AS
DECLARE @Hrkid INT,
DECLARE @miktar DECIMAL (10,2);
SELECT @Hrkid = ST_STOKI FROM inserted ins;
SELECT @miktar = ST_MIKTAR FROM inserted ins;
UPDATE [Stok] SET STOK_TOP_GRN = STOK_TOP_GRN+@miktar
WHERE STOK_ID=@Hrkid


Cvp: Trigger çalışmaması hk. - elixir84 - 12-06-2019

CREATE  TRIGGER MYTBLSTHARTRG
ON _MYTBLSTHAR FOR INSERT
AS
BEGIN
DECLARE @STOK_KODU VARCHAR(50)
DECLARE @MIKTAR FLOAT
SELECT @STOK_KODU=INSERTED.STOK_KODU,@MIKTAR=STHAR_GCMIK FROM INSERTED 
UPDATE _MYTBLSTOKPH SET TOP_GIRIS_MIK=TOP_GIRIS_MIK+1 WHERE STOK_KODU=@STOK_KODU AND DEPO_KODU='1'
END

benzeri bir örnekte kendimde denedim çalışıyor.

stok sabit tablosunda STOK_TOP_GRN alanının null olmadığına dikkat et.


Trigger çalışmaması hk. - uparlayan - 12-06-2019

Merhaba,

@cinarbil ,

UPDATE Stok SET STOK_TOP_GRN = STOK_TOP_GRN+@miktar

kısmında STOK_TOP_GRN veya @miktar , "NULL" değer içeriyor olabilir mi? Kontrol ettiniz mi?


Cvp: Trigger çalışmaması hk. - cinarbil - 12-06-2019

(12-06-2019, Saat: 16:44)uparlayan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhaba,

@cinarbil ,

UPDATE Stok SET STOK_TOP_GRN = STOK_TOP_GRN+@miktar

kısmında STOK_TOP_GRN veya @miktar , "NULL" değer içeriyor olabilir mi? Kontrol ettiniz mi?
 
Evet doğru bu giren cikan alanları null 

UPDATE Stok SET STOK_TOP_GRN=0  ile  atadın sonra çalıştı Allah c.c razı olsun  teşekkür ederim.


[Çözüldü] Trigger çalışmaması hk. - uparlayan - 12-06-2019

Şu yazıyı gözden geçirmenizi tavsiye ederim;

Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.


[Çözüldü] Trigger çalışmaması hk. - serdar - 18-08-2019

Merhaba
SELECT @Hrkid = ST_STOKID, @miktar = ST_MIKTAR  FROM inserted
bu satırda sozde tablodan değişkene değer almaya calısmıssınız .tabloya tek kayıt eklendiğinde sorun olmaz.
fakat coklu kayıt (bulk insert) yapmaya kalktıgınızsa basınız belaya gırer.Triggerlarde mecbur kalınmadıkca değişken kullanma taraftarı degılım
benım onerım su sekilde
CREATE TRIGGER Stok_Giris ON StokHareket
AFTER INSERT
AS
  UPDATE stk 
  SET stk.STOK_TOP_GRN = stk.STOK_TOP_GRN + I.ST_MIKTAR 
  FROM Stok  AS stk
 JOIN INSERTED I ON I.ST_STOKID=stk.STOK_ID