ASP.NET
Network Akademi

Met Hostimg

“Bilgi paylaşıldıkça artar” sloganı ile .NET Platformuna ilişkin birikimlerin paylaşıldığı ASP.NET.TR Topluluğunda sizde “YAZAR” olmak için ; info@asp.net.tr e-mail adresine kendinizi anlatan bir e-mail göndererek başvuruda bulunabilirsiniz.

SQL Trigger’lar

Onur YILMAZ
SQL
13.09.2011 17:23:01
Hit : 2623

Merhaba arkadaşlar bu makalede SQL’de Trigger’ların ne işe yaradığından ve nasıl kullanıldığından bahsetmek istiyorum.

Trigger Nedir?
Trigger’ın türkçe karşılığı tetikleyicidir.Yani bir işlem yapıldığında o işlem sonucunda başka bir işlemin başlamasını sağlar.
 
Bir örnek vermek istersek;
Veritabanımızda “Urun” ve “UrunLog” adında tablolarımız olduğunu varsayalım.Bu “Urun” tablomuzda meydana gelen değişiklikleri “UrunLog” tablomuzda loglayıp takip etmek isteyelim.
 
Bu seneryoda farklı işlemler gerçekleyip amacımıza ulaşabiliriz fakat biz Trigger ile nasıl yapıldığına bakacağız.
 
Önemli Not : Triggerlar sadece Insert ve Update işlemlerinde çalışırlar.Delete işlemlerinde bir tepki vermezler.
 
Buyrun şimdi aşağıdaki sorguyu takip ederek yukarıda yazdığımız senaryoyu gerçekleyelim.
 
--Test Veritabanımızı oluşturuyoruz.
CREATE DATABASE Test
 
--Urun Tablomuzu oluşturuyoruz.
CREATE      TABLE Urun
(
      UrunId      INT   IDENTITY(1,1)     NOT NULL,
      UrunAdi     NVARCHAR(50)            NULL,
      UrunKodu    NVARCHAR(50)            NULL,
      AktifMi     BIT                     NULL
)
 
--Urun tablosunda yapılan işlemlerin loglarını
--tutacağımız UrunLog tablosunu oluşturuyoruz.
CREATE      TABLE UrunLog
(
      UrunLogId   INT   IDENTITY(1,1)   NOT NULL,
      UrunLogDate DATETIME              NULL,
      UrunId      INT                   NULL,
      UrunAdi     NVARCHAR(50)          NULL,
      UrunKodu    NVARCHAR(50)          NULL,
      AktifMi     BIT                   NULL
)
 
 
--Urun tablomuzda yapılan değişiklikleri
--UrunLog tablosuna kayıt etmek için Trigger'ımızı oluşturuyoruz.
 
CREATE TRIGGER Trigger_Urun ON Urun
AFTER INSERT,UPDATE
AS
BEGIN
      INSERT INTO UrunLog
      SELECT GETDATE(), --UrunLog tablosunda UrunLogDate alanı için
             *          --UrunLog tablomuzdaki diger bütün alanlar Urun tablomuzdaki ile aynı olduğu için
                                   --* ile hepsini çekiyoruz.
      FROM   INSERTED
END

--Urun tablosuna Gofret adında bir ürün ekliyoruz

INSERT INTO Urun
VALUES ('Gofret','Gfr',1)
 
--Urun tablomuzu kontrol ediyoruz
SELECT      *
FROM       Urun

--Urun tablosunda yapmış olduğumuz değişiklik
--UrunLog tablomuza trigger ile kayıt olmuşmu
--diye kontrol ediyoruz.
SELECT      *
FROM       UrunLog
 
 
--Urun tablosuna eklemiş olduğumuz Gofret ürününün
--adını Test Gofret olarak güncelliyoruz.
UPDATE      Urun
SET         UrunAdi     =     'Test Gofret'
WHERE       UrunAdi     =     'Gofret'
 
--Urun tablomuzu kontrol ediyoruz
SELECT      *
FROM       Urun
 
 
--Urun tablosunda yapmış olduğumuz değişiklik
--UrunLog tablomuza trigger ile kayıt olmuşmu
--diye kontrol ediyoruz.
SELECT      *
FROM       UrunLog
 
 
--Test için yaptığımız tabloları
--veritabanımızdan kaldırıyoruz.
DROP TABLE Urun
DROP TABLE UrunLog
 
Umarım yararlı bir makale olmuştur.
 
Bir sonraki makalede görüşmek üzere.
İyi günler dilerim.

 




BU İÇERİĞE YORUMDA BULUNUN


Bu MAKALE'ye yorum yapabilmek için Üye olmalısınız ...!


BU İÇERİĞE YAPILAN YORUMLAR