Sql Trigger Kullanımı

Sql trigger nedir? Sorusunun cevabı; bir tabloda bir olay olduğunda (insert,delete,update), o tablo yahut farklı bir tablo içerisinde başka bir işlem yaptırmaktır. Sql trigger, Türkçe’ye tetikleyici olarak geçmiştir. Sql Server trigger lar veritabanı için vazgeçilmezdir diyebiliriz. Sql trigger kullanımı sırasında mutlaka dml (data manipulation language) kodları (insert,delete,update) kullanılmalıdır. Bunlara ek olarak Sql trigger kullanımı sırasında değişken tanımı ve kullanımı çok önemlidir. Eğer matematiksel işlemler ile yapılarak değişken içerisinde değer atanacaksa mutlaka trigger içerisinde aggregate fonksiyonlar kullanılmalıdır.
Sql Trigger

Sql Trigger Kullanımı :

Trigger Türleri :

Sql Trigger İnsert :

Bir tabloya yeni bir veri eklendiğinde (insert) trigger ‘ı çalıştırarak işlem yaptırılmak isteniyorsa insert trigger kullanılmalıdır. Sql trigger yazımı işlemine başlarken for insert yahut after insert anahtar kelimelerinden birisi kullanılmalıdır. İnsert trigger kullanımı sırasında ikisi hemen hemen aynı mantıkta çalışır. Manası ilgili tabloya veri insert edildikten sonra trigger devreye girer ve trigger içerisinde belirtilen kod bloğu çalışır.

Sql Trigger Update :

Bir tablodaki veri güncellendiğinde (update) trigger ‘ı çalıştırarak işlem yaptırılmak isteniyorsa update trigger kullanılmalıdır. Update trigger kullanımı sırasında kodlamaya başlarken for update veya after update şeklinde iki anahtar kelime kullanılabilir. Trigger içerisinde after update anahtar kelimesi kullanılırsa, Sql server da update işlemi olduktansonra trigger devreye girer ve trigger içerisinde belirtilen kod bloğu çalışır.

Sql Trigger Delete :

Bir tablodan veri silindiğinde (delete) ilgili trigger çalışır. Delete trigger kullanımı sırasında ilk kodlamaya başlarken for delete yada after delete anahtar kelimelerinden bir tanesi kullanılabilir. Trigger içerisinde after delete anahtar kelimesi kullanılırsa, ilgili tablo içerisinde bir delete işlemi olduktan sonra trigger devreye girer ve trigger içerisinde belirtilen kod bloğu çalışır.sql trigger kullanımı

Trigger İle İlgili Örnekler :

Sql Trigger Örnekleri :

İnsert Trigger Örnekleri :

Bu örnekte Logo Sql sorgu örnekleri vereceğim. Trigger içerisinde Logo Sql tabloları ile çalışacağız ve bu örneklerde Sql trigger if kullanımı ile alakalı bilgi de edineceğiz.

Tabloda eklenen satırın grpcode kolonu 1 ise specode kolonuna alış, değilse satış şeklinde güncelleyen bir trigger yazalım.

CREATE TRIGGER KOMUTU
ON LG_005_01_INVOICE
AFTER INSERT
AS

DECLARE @GRPCODE INT, @SPECODE NVARCHAR(20), @LOGICALREF INT

SELECT @GRPCODE = GRPCODE, @SPECODE = SPECODE, @LOGICALREF = LOGICALREF FROM INSERTED

IF (@GRPCODE = 1)
BEGIN
UPDATE LG_005_01_INVOICE SET SPECODE = ‘ALIŞ’ WHERE LOGICALREF = @LOGICALREF
END
ELSE
BEGIN
UPDATE LG_005_01_INVOICE SET SPECODE = ‘SATIŞ’ WHERE LOGICALREF = @LOGICALREF
ENDLogo Sql

Sql Update Trigger Örnekleri :

Invoice tablosunda silinen satırın Id sini aldırıp ilişkili tabloda alınan Id değerine göre satır sildiren bir trigger yazalım.

CREATE TRIGGER KOMUTU
ON LG_005_01_INVOICE
AFTER UPDATE
AS

DECLARE @GRPCODE INT, @LOGICALREF INT

SELECT @GRPCODE = GRPCODE , @LOGICALREF = LOGICALREF FROM DELETED

IF (@GRPCODE = 1)
BEGIN
DELETE FROM LG_005_01_STLINE WHERE INVOICEREF = @LOGICALREF
ENDLogo trigger

Sql Delete Trigger Örnekleri :

Invoice tablosunda silinen satırın clientref ini aldırıp ilişkili tabloda alınan clientref değerine göre satır sildiren bir trigger yazalım.

CREATE TRIGGER KOMUTU
ON LG_005_01_INVOICE
AFTER DELETE
AS

DECLARE @GRPCODE INT, @CLIENTREF INT

SELECT @GRPCODE = GRPCODE , @CLIENTREF = CLIENTREF FROM DELETED

IF (@GRPCODE = 1)
BEGIN
DELETE FROM LG_005_CLCARD WHERE LOGICALREF = @CLIENTREF
ENDsql delete trigger

Sql Trigger Enable Disable (Aktif/Pasif) Yapmak

Sql Trigger lar tabloların altında tutulur. İlgili tablo bulunur ve genişletildikten sonra triggers dosyası da genişletilir. Pasif/aktif edilecek trigger ın üzerine sağ tıklayıp enable yahut disable seçeneğine tıklanır. disable trigger

Trigger Silme İşlemi Nasıl Yapılır?

Bir trigger silmek isteniyorsa drop trigger komutu kullanılır. Drop trigger xyz yazıldıktan sonra f5 tuşuna basılarak trigger silinir.

Trigger İle İnsert Update Delete Yakalama :

if exists (select * from inserted) and exists (select * from deleted)
select @type = ‘Update’
else if exists (select * from inserted)
select @type = ‘Insert’
else
select @type = ‘Delete’

İlk yorum yapan olun

Bir yanıt bırakın

E-posta hesabınız yayımlanmayacak.


*