MS SQL TRIGGERLAR (SQL Tetikleyicileri)

MS SQL TRIGGERLAR (SQL Tetikleyicileri)
11 Şubat 2015SQL

Merhaba, bu yazıda sql triggerları ile ilgili birkaç ufak detay anlatacağım. Öncelikle nedir bu triggerlar ondan bahsedeyim. Trigger lar veritabanımızda istediğimiz herhangi bir satırda bir işlem yaptıktan sonra otomatik olarak gerçekleşmesini istediğimiz işlemleri yazdığımız sistemlerdir.Bunu örnek üzerinde anlatmak istedim. Öncelikle iki adet tablo oluşturalım. Birinin adı adsoyad diğerinin de projeler olsun. 
 

CREATE TABLE [dbo].[adsoyad](
[id] [int] IDENTITY(1,1) NOT NULL,
[ad] [nvarchar](50) NULL,
[soyad] [nvarchar](50) NULL
)

CREATE TABLE [dbo].[projeler](
[id] [int] IDENTITY(1,1) NOT NULL,
[record_id] [int] NULL,
[meslek] [nvarchar](150) NULL,
[gorev] [nvarchar](150) NULL,
[maas] [money] NULL
)

gördüğünüz gibi tabloları oluşturduktan sonra dilerseniz ilk trigger ımızı yazalım . Bu yazacağımız trigger da adsoyad tablomuza bir kayıt eklediğimiz zaman o kaydın id değerini alıp projeler tablosunda record_id olarak satır ekleteceğiz.
 

CREATE TRIGGER trEkle ON [adsoyad]
AFTER INSERT
AS
BEGIN 
declare @id int; 
select @id=inserted.id from inserted; 
insert into projeler (record_id) VALUES (@id) END 
GO

bu şekilde trigger ımızı oluşturduk. adsoyad tablomuza herhangi bir satır eklediğimizde ekleme işlemi tamamlanır tamamlanmaz projeler tablomuzda da ilgili kaydı referans alan bir kayıt oluşacaktır. Burada CREATE TRIGGER ile trigger oluşturacağımızı belirttik. trEkle bizim trigger ismimiz ON adsoyad ile de adsoyad tablomuz üzerinde işlem yapacağımızı söyledik.

AFTER INSERT ile insert işleminden sonra uygulansın dedik. AFTER yerine FOR da kullanabiliriz . İkisi genel itibariyle aynı işlemleri yapmakta. INSERT yerine DELETE yada UPDATE kullanmamız da mümkündür. biz ekleme işleminden sonra yapacağımız için böyle bir şey kullandım. BEGIN ve GO arasına yazdığımız kodlar bizim kod bloğumuzu içermektedir.
 

insert into adsoyad (ad,soyad) VALUES ('Ender','Ariç')
(1 row(s) affected)

(1 row(s) affected)

Normal Şartlarda veritabanına kayıt eklediğimiz zaman iki tek 1 satırın etkilenmesi gerekirken gördüğünüz gibi iki satır eklendi.
 

id ad soyad
7 Ender Ariç

adsoyad tablomuz bu şekilde bir satıra kavuşurken projeler tablomuz da aşağıdaki gibidir. 

id record_id meslek gorev maas
1 7 NULL NULL NULL

bu şekilde trigger ile ilgili istediğiniz birçok şeyi yapmanız mümkündür. Trigger'ın her ne kadar yukarıdaki örnekteki gibi ufak şeylerde çok fazla bir etki, değişiklik yaratmadığını görsek de binlerce satırlık tablolarda hayati olduğunu söyleyebiliriz. Zira excelden 30 bin satır ve 40 sütunluk bir veri aldığınızı düşünün. Bu verileri veritabanına kaydettikten sonra bir de o tablodaki birkaç sütununu başka bir tabloya ekleyeceğinizi düşünün. Üzerine bir de bazı sütunlardaki eklenen veriler ile bazı tablolardaki verileri sileceğinizi düşünün. Uygulamanızdan gönderdiğiniz sorgular yanıt bulana kadar ya çok güçlü bir bilgisayar ve ağ yapısına sahip olup sorguları birkaç saat sonunda çalıştırabilirsiniz. Yada Trigger kullanarak bu zamanları minimize edersiniz. Seçim size kalmıştır. 

Trigger'lardaki update olayını bir sonraki  yazımda anlatacağım.
 

 

2418 Görüntülenme sayısı

BİR YORUM YAZIN

Bilgileriniz Güvende!E-Posta adresiniz ve diğer bilgileriniz kimseyle paylaşılmayacaktır.