Konuyu Açan
#1
Veri tutarlılığı ve değişikliklerin izlenmesi, modern veritabanı yönetim sistemlerinin temel ihtiyaçlarından biridir. Bu noktada, SQL trigger’ları özellikle güncelleme işlemlerini takip etmek ve otomatik kayıtlara almak için güçlü araçlar sunar. Peki, nasıl kullanılır ve nelere dikkat edilmelidir?
SQL trigger’ları, belirli bir olay gerçekleştiğinde otomatik olarak tetiklenen ve tanımlı işlemleri yapan fonksiyonlardır. Bu bağlamda, özellikle UPDATE trigger’ları, verilerin güncellenmesi sırasında devreye girerek, değişiklikleri kaydetme veya denetleme amacıyla kullanılır. Örneğin, müşteri bilgilerinin güncellenmesi sırasında eski ve yeni değerleri karşılaştırmak ve bu değişiklikleri bir log tablosuna kaydetmek oldukça yaygın bir senaryodur.
Bir UPDATE trigger’ı tasarlarken dikkat edilmesi gereken noktalar şunlardır:
- Trigger’ın hangi tabloda ve hangi koşullarda tetikleneceğine karar verin.
- İşlem sırasında OLD ve NEW sanal tabloları kullanılır; eski ve yeni değerleri burada karşılaştırabilirsiniz.
- Değişiklikleri kaydetmek için, ayrı bir log tablosu oluşturmak ve trigger içinde INSERT işlemi yapmak iyi bir uygulamadır.
- Performans açısından, trigger’ların gereksiz yere karmaşık hale gelmemesine dikkat edin. Çok sık güncelleme yapan tablolar üzerinde aşırı yük oluşturabilir.
- Ayrıca, trigger’ların çalışmasını engelleyen veya hatalara neden olabilecek durumları önceden test etmek önemlidir.
Örnek olarak, müşteri tablosunda yapılan her güncellemenin kaydını tutan basit bir trigger şu şekilde olabilir:
KOD
123456789101112131415
CREATE TRIGGER trg_MusteriGuncelle
ON Musteriler
AFTER UPDATE
AS
BEGIN
INSERT INTO GuncellemeLog (MusteriID, EskiDeger, YeniDeger, DegistirilmeTarihi)
SELECT
i.MusteriID,
CONCAT('Ad: ', d.Ad, ', Soyad: ', d.Soyad),
CONCAT('Ad: ', i.Ad, ', Soyad: ', i.Soyad),
GETDATE()
FROM inserted i
JOIN deleted d ON i.MusteriID = d.MusteriID
END
Burada, inserted ve deleted sanal tabloları, güncelleme öncesi ve sonrası verileri temsil eder. Bu yapı, değişiklikleri detaylı biçimde kaydetmek ve denetlemek için temel bir örnektir.
Sonuç olarak, SQL trigger’ları veri bütünlüğünü sağlama ve değişiklikleri izleme açısından güçlü araçlardır. Ancak, performans ve bakım kolaylığı açısından dikkatli kullanılmalı ve gereksiz karmaşık işlemlerden kaçınılmalıdır.
