Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
[Çözüldü] Trigger çalışmaması hk.
#1
İ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
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla
#2
(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.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#3
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
Web Site : Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Facebook Page : Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#4
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.
Cevapla
#5
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?
P.Safa:Yaşlanarak değil, yaşayarak tecrübe kazanılır.Zaman insanları değil,armutları olgunlaştırır
C.Yücel:Toprak gibi olmalısın! Ezildikçe sertleşmelisin!Seni ezenler sana muhtaç kalmalı! Hayatı sende bulmalı
S.Canan:Bildiğini zannettiğin an hiç bir şey öğrenemezsin
Bilgi uçar
WWW
Cevapla
#6
(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.
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla
#7
Ş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.
P.Safa:Yaşlanarak değil, yaşayarak tecrübe kazanılır.Zaman insanları değil,armutları olgunlaştırır
C.Yücel:Toprak gibi olmalısın! Ezildikçe sertleşmelisin!Seni ezenler sana muhtaç kalmalı! Hayatı sende bulmalı
S.Canan:Bildiğini zannettiğin an hiç bir şey öğrenemezsin
Bilgi uçar
WWW
Cevapla
#8
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
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  MSSQL StoreProcedure Performans Sorunu (Çözüldü) adelphiforumz 23 470 18-09-2019, Saat: 14:13
Son Yorum: Bay_Y
  [ ÇÖZÜLDÜ ]MSSQL VeriTabanına Tarih Kaydetme Hatası theSinan 7 276 04-09-2019, Saat: 10:57
Son Yorum: theSinan
  Trigger a paramatre gönderme Bay_Y 11 1.798 28-05-2018, Saat: 11:59
Son Yorum: Bay_Y
  Trigger ile iki alanı birleştirme AkMegaSoft 9 2.368 08-06-2017, Saat: 16:33
Son Yorum: AkMegaSoft



Konuyu Okuyanlar: 1 Ziyaretçi