T-SQL Trigger (Tetikleyiciler)

Bu konumuzda, T-SQL Trigger (Tetikleyiciler) hakkında detaylı bilgiler ve örnekler paylaşıyoruz. T-SQL Trigger (Tetikleyiciler) Nedir? Gelin hep beraber öğrenelim.

T-SQL Trigger (Tetikleyiciler)

T-SQL Trigger (Tetikleyiciler)

Tetikleyiciler tablo üzerinde herhangi bir işlem (delete, insert, update) gerçekleştiği zaman başka bir işlemin yapılmasını sağlamak için kullanılır.

Delete

Tablo üzerinde kayıt silindiğinde başka bir işlem yapmak için kullanılır.

CREATE TRIGGER tettikleyici_adı ON Tabo_adı
FOR DELETE
AS
BEGIN
	------ T-SQL
END

Örnek: Bir öğrenci silindiği zaman öğrenciye ait derslerin silinmesini sağlayan trigger yazalım.

CREATE TRIGGER Ogr_Del ON OgrenciTanim
FOR DELETE
AS
BEGIN
	DECLARE @ogrid INT

	SELECT @ogrid = ogrid FROM deleted

	DELETE FROM OgrDersleri

	WHERE ogrid = @ogrid
END

Insert

Tabloya yeni bir kayıt eklendiğinde başka bir işlem yapmak için kullanılır.

CREATE TRIGGER tettikleyici_adı ON Tabo_adı
FOR INSERT
AS
BEGIN
	------ T-SQL
END

Update

Tabloya mevcut kayıt güncellendiği zaman başka bir işlem yapmak için kullanılır.

CREATE TRIGGER tettikleyici_adı ON Tabo_adı
FOR UPDATE
AS
BEGIN
	------ T-SQL
END

Uruntanim

Satis

Örnek: Herhangi bir ürün satıldığı zaman ürünün satılan miktarını güncelleyen trigger yazalım.

CREATE TRIGGER kayit_ekleme ON Satis
FOR INSERT
AS
BEGIN
	DECLARE @uid INT
		,@miktar FLOAT

	SELECT @uid = uid
		,@miktar = isnull(miktar, 0)
	FROM inserted

	UPDATE UrunTanim
	SET satilanmiktar = isnull(satilanmiktar, 0) + @miktar
	WHERE uid = @uid
END

Örnek: Herhangi bir ürünün satışı silindiği zaman ürünün satılan miktarını güncelleyen trigger yazalım.

CREATE TRIGGER kayit_ekleme ON Satis
FOR DELETE
AS
BEGIN
	DECLARE @uid INT
		,@miktar FLOAT

	SELECT @uid = uid
		,@miktar = isnull(miktar, 0)
	FROM deleted

	UPDATE UrunTanim
	SET satilanmiktar = isnull(satilanmiktar, 0) - @miktar
	WHERE uid = @uid
END

Örnek: Herhangi bir ürünün satışı güncellendiği zaman ürünün satılan miktarını güncelleyen trigger yazalım.

NOT: Ürünün sadece miktarı değil aynı zamanda ürünün kendisi de değiştirebiliriz. Yani satılan ürün yanlışlıkla satılmışsa yenisi ile güncellenir.

CREATE TRIGGER [dbo].[kayit_update] ON [dbo].[Satis]
FOR UPDATE
AS
BEGIN
	DECLARE @ilk_uid INT
		,@son_uid INT
		,@ilk_miktar FLOAT
		,@son_miktar FLOAT

	SELECT @ilk_uid = uid
		,@ilk_miktar = isnull(miktar, 0)
	FROM deleted

	SELECT @son_uid = uid
		,@son_miktar = isnull(miktar, 0)
	FROM inserted

	IF (@son_uid = @ilk_uid)
		UPDATE UrunTanim
		SET satilanmiktar = isnull(satilanmiktar, 0) - @ilk_miktar + @son_miktar
		WHERE uid = @son_uid
	ELSE
	BEGIN
		UPDATE UrunTanim
		SET satilanmiktar = isnull(satilanmiktar, 0) - @ilk_miktar
		WHERE uid = @ilk_uid

		UPDATE UrunTanim
		SET satilanmiktar = isnull(satilanmiktar, 0) + @son_miktar
		WHERE uid = @son_uid
	END
END

Tepkiniz Nedir?

like

dislike

love

funny

angry

sad

wow