SQL Server’da Haftasonunu Kontrol Edip Başka Tabloya Insert Yapan Trigger
Herkese merhaba,
Bu yazıda SQL Server’da haftasonunu kontrol edip başka tabloya insert yapan trigger hakkında bilgi vereceğim.
SQL Server’da trigger ile ilgili çok fazla örnek göremiyorum. Bu yüzden böyle bir örnek yapma ihtiyacı hissettim.
Örnek şu şekilde.
Bir tablomuz var ve bu tabloya veri insert işlemi yapıyoruz. Eğer veri insert işlemi haftasonunda bir güne denk geliyorsa başka bir tabloya da insert yapsın. Bir nevi log tablo üzerine insert yapma işlemi.
Aşağıdaki kod yardımıyla bu işlemi rahatlıkla yapabilirsiniz.
CREATE TABLE AnaTablo
(
id INT IDENTITY(1, 1) PRIMARY KEY,
KullaniciAd NVARCHAR(100)
);
CREATE TABLE AnaTablo_Log
(
id INT IDENTITY(1, 1) PRIMARY KEY,
KullaniciAd_Log NVARCHAR(100)
);
--Trigger oluşturulması
CREATE TRIGGER AnaTablo_Trigger
ON AnaTablo
FOR INSERT
AS
SET DATEFIRST 1;
DECLARE @GunSayisi INT;
SET @GunSayisi = DATEPART(DW, GETDATE()); --Günü buradan değiştirebilirsiniz. (Test için)
IF (@GunSayisi = 6 OR @GunSayisi = 7) --Cumartesi ve Pazar kontrolü
BEGIN
DECLARE @Ad NVARCHAR(100);
SELECT @Ad = KullaniciAd
FROM INSERTED;
INSERT INTO AnaTablo_Log
(
KullaniciAd_Log
)
VALUES
(@Ad);
END;
--Veri eklenmesi işlemi
INSERT INTO dbo.AnaTablo
(
KullaniciAd
)
VALUES
(N'Yavuz' -- KullaniciAd - nvarchar(100)
);
--İki tablonunda listelenmesi
SELECT *
FROM dbo.AnaTablo;
SELECT *
FROM dbo.AnaTablo_Log;
Tabloları oluşturun, sonrasında triggeri oluşturun.
Bu işlemleri bitirdi iseniz şimdi veri ekleme işlemini yapın.
Eğer olduğunuz gün haftasonuna denk geliyorsa iki tabloya da veri insert edecektir. Hafta içinin olduğu bir günde insert işlemi yaparsanız sadece tek tabloya veri insert edecektir.
Ben hafta içi bir günde çalıştırdığım için sadece tek tabloya insert işlemi yapıldı. (Yani Ana Tabloya)
Görüldüğü üzere tek tablo etkilendi. Şimdi iki tabloyu da kontrol edelim.
Görüldüğü üzere haftasonuna göre kontrol edilip triggerin çalışması sağlandı.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.