Forum

Koşullu Trigger Çal...
 
Bildirimler
Hepsini Temizle

[Çözüldü] Koşullu Trigger Çalıştırma Ve Insert İşlemi

10 Yazılar
2 Üyeler
0 Likes
2,863 Görüntüleme
(@yusufbaran)
Gönderiler: 57
Trusted Member
Konu başlatıcı
 

Merhaba, bir tabloya kayıt girildikten sonra girilen o kaydı belli koşullara uyup uymadıına bakıp eğer uyuyorsa başka bir veritabanındaki başka bir tabloya eklemek istiyorum, bu mümkün müdür?

 

Örnek Kod: https://pastebin.pl/view/d24094df

 
Gönderildi : 11/01/2022 18:05

(@mehmetsucu)
Gönderiler: 85
Estimable Member
 

Merhaba @yusufbaran

Linked server kurup trigger içine if koşulu ile insertleri sağlayabilirsin.

Eğer insert yaparken exe de (ole db) hata verirse, her iki sunucunun Component Services- Local DTC ayarlarını yapmanız gerekecektir.

Ya da kaynak tabloya log atıp(Tabloyu kopyalayıp), log tablosuna insert oldukça linked server insertleri yapabilirsin.

Mehmet SUCU
HBYS Yazılım Uzmanı
[email protected]
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 12/01/2022 09:37

(@yusufbaran)
Gönderiler: 57
Trusted Member
Konu başlatıcı
 

@mehmetsucu Merhaba, yanıtınız için teşekkür ederim bunun yanında kullandığım diğer veritabanı aynı instance içerisinde, linked server gibi karmaşık bir yapıya ihtiyacım var mı? Daha basit bir yoldan halledilebilir mi acaba?

 
Gönderildi : 12/01/2022 12:00

(@mehmetsucu)
Gönderiler: 85
Estimable Member
 

Merhaba, aynı yapı içerisinde ise trigger ile aktarım yapabilirsiniz.

Mehmet SUCU
HBYS Yazılım Uzmanı
[email protected]
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 12/01/2022 12:02

(@yusufbaran)
Gönderiler: 57
Trusted Member
Konu başlatıcı
 

@mehmetsucu Merhaba, işte orada nasıl yapacağımı tam çözemedim, koşullu triggerı ilk iletimde belirttiğim örneğe uygulama konusunda yardıma ihtiyacım var. Teşekkürler.

 
Gönderildi : 12/01/2022 12:25

(@mehmetsucu)
Gönderiler: 85
Estimable Member
 

Merhaba @yusufbaran,

Örneğin;

CREATE OR ALTER TRIGGER dbo.FaturaEkle
ON dbo.Faturalar
FOR INSERT
AS
BEGIN

IF EXISTS
(
SELECT 1
FROM Inserted INS (NOLOCK)
WHERE INS.SubeKodu = 'A01'
AND INS.Iptal = '0'
AND INS.trInvoiceLine.ItemCode NOT IN ( 'kargo', 'KargoKapida' )
)
BEGIN
INSERT INTO Veritabani2.[dbo].[Siparisler]
([FaturaBaslik]
, [FaturaNumarasi]
, [FaturaTarihi])
SELECT INS2.FaturaBaslik
, INS2.FaturaNumarasi
, INS2.FaturaTarihi
FROM Inserted INS2
WHERE INS2.FaturaTarihi = CONVERT( VARCHAR (10), GETDATE(), 120 )
AND INS2.SubeKodu = 'A01'
AND INS2.Iptal = '0'
AND INS2.trInvoiceLine.ItemCode NOT IN ( 'kargo', 'KargoKapida' ) ;

END ;
END ;

Mehmet SUCU
HBYS Yazılım Uzmanı
[email protected]
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 12/01/2022 12:34

(@yusufbaran)
Gönderiler: 57
Trusted Member
Konu başlatıcı
 

@mehmetsucu Merhaba, ilginiz ve alakanız için çok teşekkür ederim, en kısa sürede veritabanında işlem yokken deneyip sonucu buraya yazarım, tekrar teşekkürler.

 
Gönderildi : 12/01/2022 13:43

(@yusufbaran)
Gönderiler: 57
Trusted Member
Konu başlatıcı
 

@mehmetsucu Merhaba Mehmet Bey, trigger deneme şansım oldu, gerekli ayarlamaları yapıp fatura kesiyorum fakat diğer tabloya kayıt atmıyor, nerede hata olduğunu da göremiyorum çünkü belli bir hata yok, triggerda debug gibi bir şansımız var mı nerede hata olduğunu görmek için?

 
Gönderildi : 19/01/2022 12:08

(@mehmetsucu)
Gönderiler: 85
Estimable Member
 

@yusufbaran Merhaba,

Where şartlarını kaldırıp dener misin?

INSERT INTO Veritabani2.[dbo].[Siparisler]
([FaturaBaslik]
, [FaturaNumarasi]
, [FaturaTarihi])
SELECT INS2.FaturaBaslik
, INS2.FaturaNumarasi
, INS2.FaturaTarihi
FROM Inserted INS2

 

Mehmet SUCU
HBYS Yazılım Uzmanı
[email protected]
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 19/01/2022 12:18

(@yusufbaran)
Gönderiler: 57
Trusted Member
Konu başlatıcı
 

@mehmetsucu Merhaba tekrardan, bütün where koşullarını kaldırıp denedim yine kayıt atmadı, herhangi bir hata da çıkmıyor işlem sırasında.

Düzeltme: Ben işlemler sırasında INNER JOIN ile başka tabloları bağlıyorum sanırım sorun orada başlıyor, INNER JOIN ile bağladığım kısımları kaldırıp referans sütunları boş geçtiğim zaman trigger çalıştı, fakat istediğim bilgilerden bazıları boş geldiği için işime yaramadı. INNER JOIN kullanılmıyor sanırım trigger içerisinde.

Düzeltme 2: INNER JOIN kullanmama inserted tablosu ile bağlantı yapmam koşulu ile izin verdi ilk kullanımda sorun çıkmadı veri aktarıldı fakat ikinci INNER JOIN işleminde ikinci bir referansı inserted tablosuna vermeme rağmen verileri yazmadı.

 
Gönderildi : 19/01/2022 12:43

Paylaş: