logo


Welcome Guest! To enable all features please Giriş or Kayıt.

Bildirim

Icon
Error

Ayarlar
Son mesaja git Go to first unread
bircan  
#1 Gönderildi : 12 Mayıs 2016 Perşembe 11:08:09(UTC)
bircan

Sıralama: Member

Gruplar: Registered
Katılan: 16.05.2014(UTC)
Mesajlar: 20

11 Kere Teşekkür Etti.
3 Mesajına Toplam 4 Kere Teşekkür Edildi.
Hocam 2 Tablomuz olduğunu düşünelim

GirisTbl(ID,MUSTERI,TUR,MIKTAR,ADRES1.............)

StokTbl (ID,MUSTERI,TUR,MIKTAR)


Giris Tablosuna Eklenen Veri StokTbl (MUSTERI,TUR) Benzerse StokTbl (MIKTAR) + GirisTbl(MIKTAR) Kadar Arttırılsın.

EGER

Giris Tablosuna Eklenen Veri StokTbl (MUSTERI,TUR) Benzemezse StokTbl (ID,MUSTERI,TUR,MIKTAR) Eklensin


Ve Bunu GirisTbl INSERT ICIN TRIGGER OLUSTURALIM GirisTbl Girilen Değer StokTbl varsa mıktar kısmı gırılen deger kadar arttırılsın Yoksa eger yenı kayıt olusturulsun.


Teşekkür ederim
varyemez  
#2 Gönderildi : 12 Mayıs 2016 Perşembe 17:03:13(UTC)
varyemez

Sıralama: Newbie

Gruplar: Registered
Katılan: 12.05.2016(UTC)
Mesajlar: 2
Bay
Turkey
Konum: Bursa

Thanks: 1 times
1 Mesajına Toplam 1 Kere Teşekkür Edildi.
Trigger ile değil de sp ile yapılmış bir örnek vereyim size. Her nasılsa trigger işinde bir sorun çıkmış ki bunu kullanmışım zamanında



Kod:

ALTER PROCEDURE [dbo].[CARI_INS_UPD] 
  @PAYGLN VARCHAR(13),
  @NETICE tinyint OUTPUT 
AS

BEGIN

SET NOCOUNT ON;
DECLARE @AUTORIZED VARCHAR(70) 
DECLARE @COMPANY VARCHAR(70) 
DECLARE @EMAIL VARCHAR(50) 
DECLARE @GLN VARCHAR(13) 
DECLARE @GRUP VARCHAR(10)
DECLARE @PHONE VARCHAR(25)
DECLARE @SEHIR VARCHAR(25) 
DECLARE @ILCE VARCHAR(25)
DECLARE @ADRES VARCHAR(255)

SELECT @AUTORIZED = authorized,
@COMPANY = companyName,
@EMAIL = email,
@GLN = gln,
@GRUP = GRUP ,
@PHONE = PHONE,
@SEHIR = city,
@ILCE = town,
@ADRES = ADDRESS 
FROM PAYDAS WHERE gln = @PAYGLN ;
  
  IF (EXISTS(SELECT GLNNO FROM CARI WHERE GLNNO = @GLN)) 
    BEGIN
    UPDATE CARI 
    SET YETKILI = @AUTORIZED ,
     CARIAD = @COMPANY ,
     EMAIL = @EMAIL ,
     CTURU = @GRUP ,
     PHONE = @PHONE ,
     SEHIR = @SEHIR ,
     ILCE = @ILCE ,
     ADRES = @ADRES WHERE GLNNO = @GLN ;
     SET  @NETICE = 0 ;
     END ELSE 
     BEGIN
     INSERT INTO CARI (YETKILI , CARIAD  , EMAIL , GLNNO , CTURU , PHONE ,
     SEHIR , ILCE , ADRES) 
     VALUES (@AUTORIZED, @COMPANY, @EMAIL, @GLN, @GRUP, @PHONE, @SEHIR,@ILCE,@ADRES);

     SET @NETICE = 1;
     END
     END




thanks varyemez: 1 Kişi mesajın için Teşekkür Etti.
bircan 13.05.2016(UTC) tarihinde
mehmetzekikir  
#3 Gönderildi : 13 Mayıs 2016 Cuma 07:51:54(UTC)
mehmetzekikir

Sıralama: Administration

Gruplar: Administrators
Katılan: 6.05.2014(UTC)
Mesajlar: 670

19 Kere Teşekkür Etti.
152 Mesajına Toplam 253 Kere Teşekkür Edildi.
Originally Posted by: varyemez Go to Quoted Post
Trigger ile değil de sp ile yapılmış bir örnek vereyim size. Her nasılsa trigger işinde bir sorun çıkmış ki bunu kullanmışım zamanında



Kod:

ALTER PROCEDURE [dbo].[CARI_INS_UPD] 
  @PAYGLN VARCHAR(13),
  @NETICE tinyint OUTPUT 
AS

BEGIN

SET NOCOUNT ON;
DECLARE @AUTORIZED VARCHAR(70) 
DECLARE @COMPANY VARCHAR(70) 
DECLARE @EMAIL VARCHAR(50) 
DECLARE @GLN VARCHAR(13) 
DECLARE @GRUP VARCHAR(10)
DECLARE @PHONE VARCHAR(25)
DECLARE @SEHIR VARCHAR(25) 
DECLARE @ILCE VARCHAR(25)
DECLARE @ADRES VARCHAR(255)

SELECT @AUTORIZED = authorized,
@COMPANY = companyName,
@EMAIL = email,
@GLN = gln,
@GRUP = GRUP ,
@PHONE = PHONE,
@SEHIR = city,
@ILCE = town,
@ADRES = ADDRESS 
FROM PAYDAS WHERE gln = @PAYGLN ;
  
  IF (EXISTS(SELECT GLNNO FROM CARI WHERE GLNNO = @GLN)) 
    BEGIN
    UPDATE CARI 
    SET YETKILI = @AUTORIZED ,
     CARIAD = @COMPANY ,
     EMAIL = @EMAIL ,
     CTURU = @GRUP ,
     PHONE = @PHONE ,
     SEHIR = @SEHIR ,
     ILCE = @ILCE ,
     ADRES = @ADRES WHERE GLNNO = @GLN ;
     SET  @NETICE = 0 ;
     END ELSE 
     BEGIN
     INSERT INTO CARI (YETKILI , CARIAD  , EMAIL , GLNNO , CTURU , PHONE ,
     SEHIR , ILCE , ADRES) 
     VALUES (@AUTORIZED, @COMPANY, @EMAIL, @GLN, @GRUP, @PHONE, @SEHIR,@ILCE,@ADRES);

     SET @NETICE = 1;
     END
     END






teşekkür ederiz paylaşım için , trigerda bir sıkıntı çıkmaz aslında ama belki de performans için bunu yapmışsınızdır,

triger çok fazla kaynak tüketiyor ama procedure tam bir performans canavarı :)
Sql Server 2016 Eğitimiz 19 Mayıs tarihinde başlayacaktır. 32 Saat Olup Ücret 1450 TL + KDV'dir. Kayıt ve ayrıntılar için tıklayınız

twitter.com/dbakademi
Dua ve teşekkür en büyük servetlere bedel...
thanks mehmetzekikir: 1 Kişi mesajın için Teşekkür Etti.
bircan 13.05.2016(UTC) tarihinde
bircan  
#4 Gönderildi : 13 Mayıs 2016 Cuma 08:48:00(UTC)
bircan

Sıralama: Member

Gruplar: Registered
Katılan: 16.05.2014(UTC)
Mesajlar: 20

11 Kere Teşekkür Etti.
3 Mesajına Toplam 4 Kere Teşekkür Edildi.
Hocam cevabınız için Teşekkür ederim.
Tablolarda Bu şekilde tablo başına 3 Trigger çalıştırmayı düşünüyorum, 10 Tablo olmasını planlıyorum ve kayıtta tablo başına satır sayısı 20.000 civarı olacak yıllık. TRIGGERLAR performansı çalışmaya müsait olmayacak şekilde etkiler mi?

ALTER TRIGGER [dbo].[TRG_HmGirisEkle]
ON [dbo].[HmGiris]
AFTER INSERT
AS
BEGIN
DECLARE @TnmFirmaKodVeri varchar(5)
DECLARE @HmKmsTnmKodVeri varchar(12)
DECLARE @HmMiktarGTVeri int

SELECT

@TnmFirmaKodVeri=TnmFirmaKod,
@HmKmsTnmKodVeri =HmKmsTnmKod,
@HmMiktarGTVeri= HmMiktarGT
FROM
INSERTED


IF EXISTS (SELECT HmStokID FROM HmStok WHERE TnmFirmaKod=@TnmFirmaKodVeri AND HmKmsTnmKod=@HmKmsTnmKodVeri)


UPDATE
HmStok
SET
HmMiktarSG = HmMiktarSG+@HmMiktarGTVeri,
HmStok=HmStok+@HmMiktarGTVeri
WHERE
TnmFirmaKod=@TnmFirmaKodVeri AND HmKmsTnmKod=@HmKmsTnmKodVeri

ELSE


INSERT INTO
HmStok (TnmFirmaKod,HmKmsTnmKod,HmMiktarSG,HmStok)
VALUES
(@TnmFirmaKodVeri,@HmKmsTnmKodVeri,@HmMiktarGTVeri,@HmMiktarGTVeri)
END
mehmetzekikir  
#5 Gönderildi : 13 Mayıs 2016 Cuma 14:45:35(UTC)
mehmetzekikir

Sıralama: Administration

Gruplar: Administrators
Katılan: 6.05.2014(UTC)
Mesajlar: 670

19 Kere Teşekkür Etti.
152 Mesajına Toplam 253 Kere Teşekkür Edildi.
Originally Posted by: bircan Go to Quoted Post
Hocam cevabınız için Teşekkür ederim.
Tablolarda Bu şekilde tablo başına 3 Trigger çalıştırmayı düşünüyorum, 10 Tablo olmasını planlıyorum ve kayıtta tablo başına satır sayısı 20.000 civarı olacak yıllık. TRIGGERLAR performansı çalışmaya müsait olmayacak şekilde etkiler mi?

ALTER TRIGGER [dbo].[TRG_HmGirisEkle]
ON [dbo].[HmGiris]
AFTER INSERT
AS
BEGIN
DECLARE @TnmFirmaKodVeri varchar(5)
DECLARE @HmKmsTnmKodVeri varchar(12)
DECLARE @HmMiktarGTVeri int

SELECT

@TnmFirmaKodVeri=TnmFirmaKod,
@HmKmsTnmKodVeri =HmKmsTnmKod,
@HmMiktarGTVeri= HmMiktarGT
FROM
INSERTED


IF EXISTS (SELECT HmStokID FROM HmStok WHERE TnmFirmaKod=@TnmFirmaKodVeri AND HmKmsTnmKod=@HmKmsTnmKodVeri)


UPDATE
HmStok
SET
HmMiktarSG = HmMiktarSG+@HmMiktarGTVeri,
HmStok=HmStok+@HmMiktarGTVeri
WHERE
TnmFirmaKod=@TnmFirmaKodVeri AND HmKmsTnmKod=@HmKmsTnmKodVeri

ELSE


INSERT INTO
HmStok (TnmFirmaKod,HmKmsTnmKod,HmMiktarSG,HmStok)
VALUES
(@TnmFirmaKodVeri,@HmKmsTnmKodVeri,@HmMiktarGTVeri,@HmMiktarGTVeri)
END



20000 kayıt düşük bir kayıt etki etmez çok fazla
Sql Server 2016 Eğitimiz 19 Mayıs tarihinde başlayacaktır. 32 Saat Olup Ücret 1450 TL + KDV'dir. Kayıt ve ayrıntılar için tıklayınız

twitter.com/dbakademi
Dua ve teşekkür en büyük servetlere bedel...


Bu konudaki kullanıcılar
Guest (2)
Forumu Atla  
Bu foruma yeni konular postalayamazsınız.
Bu forumda ki konulara yeni posta gönderemezsiniz.
Bu forumdaki postalarınızı silemezsiniz.
Bu forumdaki postalarınızı düzenleyemezsiniz.
Bu forumda anketler yaratamazsınız.
Bu forumdaki anketlere oy veremezsiniz.