Trigger ve Stored Procedure: Veritabanında Otomatik İş Mantığı

Veritabanında belirli olaylar gerçekleştiğinde otomatik olarak çalışan kod parçacıkları gerekir. Trigger, bir tablo üzerinde INSERT, UPDATE veya DELETE işlemi yapıldığında anında tetiklenir. Stored procedure ise saklı prosedür; istenildiği zaman çağrılabilen, parametreler alabilen ve döngü, koşul gibi mantık içerebilen veritabanı fonksiyonudur.

Önce basit bir prosedür yazalım. Müşteri tablosuna yeni kayıt ekleyen işlemi otomatikleştirelim:

1CREATE PROCEDURE sp_YeniMusteriEkle
2@Ad NVARCHAR(100),
3@Email NVARCHAR(100)
4AS
5BEGIN
6INSERT INTO Musteriler (Ad, Email, OlusturmaTarihi)
7VALUES (@Ad, @Email, GETDATE());
8PRINT 'Müşteri başarıyla eklendi.';
9END;

Bu prosedürü çağırmak için:

1EXEC sp_YeniMusteriEkle 'Ahmet Yılmaz', 'ahmet@example.com';

Çıktı: Müşteri başarıyla eklendi.

Şimdi, bir sipariş eklendiğinde stok otomatik olarak düşsün. Trigger yazalım:

1CREATE TRIGGER trg_SiparisStokGuncelle
2ON Siparisler
3AFTER INSERT
4AS
5BEGIN
6UPDATE Urunler
7SET Stok = Stok - (SELECT Miktar FROM inserted WHERE UrunID = Urunler.UrunID)
8WHERE UrunID IN (SELECT UrunID FROM inserted);
9END;

Artık Siparisler tablosuna yeni satır eklendiğinde, Urunler tablosundaki stok otomatik düşecek.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

Trigger test edelim:

1INSERT INTO Siparisler (UrunID, Miktar, TarihSiparis)
2VALUES (1, 5, GETDATE());

Trigger tetiklendi; UrunID=1 ürünün stoku 5 birim azaldı.

Stored Procedure: Elle çağırırsın, daha esnek, karmaşık işlemler için ideal.

Trigger: Otomatik ve zorunlu; veri bütünlüğü sağlamak için kullanılır.

Trigger kullanırken dikkat et: aşırı tetikleme performansı düşürebilir. Stored procedure ise gerektiğinde çağrıldığı için daha kontrollüdür.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz