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ı: İ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
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?
YouTube Delphi Tips
"Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır" Peyami Safa
WWW
Cevapla
#6
(12-06-2019, Saat: 16:44)uparlayan Adlı Kullanıcıdan Alıntı: 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;

https://docs.microsoft.com/en-us/sql/t-s...erver-2017
YouTube Delphi Tips
"Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır" Peyami Safa
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
  Tek sorguda iki sonuç (Çözüldü) cinarbil 4 315 05-03-2024, Saat: 08:41
Son Yorum: cinarbil
  Tarihin ayın kaçıncı haftası olduğu nasıl bulunur (Çözüldü) adelphiforumz 3 571 19-10-2023, Saat: 12:27
Son Yorum: serdar
  CTE Sorgu sonucunu bir tabloya yazmak (Çözüldü) Bay_Y 0 378 28-08-2023, Saat: 12:47
Son Yorum: Bay_Y
  Birden fazla Trigger anemos 3 1.152 09-03-2023, Saat: 00:10
Son Yorum: anemos
  SQL Trigger Kaydı OZCANK 10 3.445 16-03-2022, Saat: 11:26
Son Yorum: OZCANK



Konuyu Okuyanlar: 1 Ziyaretçi