Skip to main content

Command Palette

Search for a command to run...

DML Trigger'lar: Değişiklik Yönetiminin Hem Aracı Hem Konusu

Published
2 min read
S

I’m a passionate software engineer specializing in SQL change management, database security, and DevOps automation. With over 17 years of experience in the banking sector, I focus on building tools and processes that make database deployments safer, more auditable, and automated.

As the creator of SQL Change Guard, I develop solutions that use risk scoring and AI-powered code analysis to detect dangerous SQL scripts before they reach production. I’m dedicated to helping teams minimize downtime and data loss through smarter change governance.

When I’m not coding, I enjoy sharing insights about secure development practices, WPF desktop applications, and integrating modern CI/CD pipelines.

Feel free to connect or reach out at info@sqlchangeguard.com

DML Trigger'lar bir araç olarak kullanılabilir, değişiklikleri izlemek için. Ama aynı zamanda kendileri de kritik veritabanı nesneleri, değişiklik yönetiminin konusu. Bu çift rolü anlamak, trigger'ları doğru kullanmanın anahtarı.

DML Trigger Nedir? DML Trigger, INSERT, UPDATE ya da DELETE işlemlerinde otomatik tetiklenen bir nesne. Veri değiştirilmeden önce ya da sonra çalışır. sqlCREATE TRIGGER trg_Musteriler_Audit ON dbo.Musteriler AFTER INSERT, UPDATE, DELETE AS BEGIN SET NOCOUNT ON;

-- Silinen kayıtları logla
INSERT INTO Audit_Musteriler (
    IslemTipi,
    MusteriID,
    EskiAd,
    YeniAd,
    IslemZamani,
    IslemYapan
)
SELECT
    CASE
        WHEN EXISTS (SELECT 1 FROM inserted) AND EXISTS (SELECT 1 FROM deleted) THEN 'UPDATE'
        WHEN EXISTS (SELECT 1 FROM inserted) THEN 'INSERT'
        ELSE 'DELETE'
    END,
    COALESCE(i.MusteriID, d.MusteriID),
    d.Ad,
    i.Ad,
    GETDATE(),
    SYSTEM_USER
FROM inserted i
FULL OUTER JOIN deleted d ON i.MusteriID = d.MusteriID;

END Bu trigger Musteriler tablosundaki her değişikliği kim yaptı, ne değişti biçiminde kaydeder.

Araç Olarak DML Trigger: Güçlü Yönler Veri geçmişi: Kritik tablolardaki her değişiklik öncesi ve sonrası değerlerle kayıt altına alınabilir. İş kuralı zorlaması: Belirli koşullar sağlanmadan değişiklik yapılmasını engelleyebilir. Cascade operasyonlar: Ana tablodaki değişiklik bağlı tablolara otomatik yansıtılabilir.

Araç Olarak DML Trigger: Zayıf Yönler Performans etkisi: Her INSERT/UPDATE/DELETE işleminde trigger çalışır. Yoğun tablolarda bu ciddi performans sorunu yaratabilir. Hata yönetimi: Trigger içindeki bir hata ana işlemi de geri alır. Beklenmedik davranışlara yol açabilir. Devre dışı bırakılabilir: Sysadmin trigger'ı disable edebilir. Audit amaçlı kullanılıyorsa bu güvenlik açığı. Gizli iş mantığı: Trigger'lar görünmez çalışır. Yeni bir geliştirici tabloya bakıp trigger varlığından haberdar olmayabilir.

Konu Olarak DML Trigger: Değişiklik Yönetimi DML Trigger'ların kendisi de kritik nesneler. Bir trigger değiştirildiğinde etkisi büyük olabilir. Trigger devre dışı bırakıldı: artık audit kaydı tutulmuyor, kimsenin haberi yok. Trigger mantığı değiştirildi: yanlış log kaydı tutuluyor, veri tutarsızlığı oluşuyor. Yeni trigger eklendi: beklenmedik cascade etkiler, performans düşüşü. Bu değişikliklerin tamamı DDL kapsamında, yani DDL Trigger ile yakalanabilir. Ama yeterli mi? Onay süreci gerekmiyor mu?

Trigger Envanteri sql-- Veritabanındaki tüm DML trigger'ları listele SELECT t.name AS TriggerAdi, OBJECT_NAME(t.parent_id) AS TabloAdi, t.is_disabled AS DevreDisi, t.create_date AS OlusturmaTarihi, t.modify_date AS SonDegisiklikTarihi, STRING_AGG(te.type_desc, ', ') AS TetikleyenIslemler FROM sys.triggers t JOIN sys.trigger_events te ON t.object_id = te.object_id WHERE t.parent_class = 1 GROUP BY t.name, t.parent_id, t.is_disabled, t.create_date, t.modify_date ORDER BY OBJECT_NAME(t.parent_id), t.name; Bu listeyi düzenli gözden geçirin. Beklenmedik bir trigger varsa ya da devre dışı bırakılmış olanlar varsa nedenini araştırın.

Sonuç DML Trigger'lar doğru kullanıldığında güçlü bir araç. Ama hem kendileri hem yarattıkları yapılar değişiklik yönetimi kapsamında dikkatle izlenmeli. Detaylı bilgi için: sqlchangeguard.com

More from this blog

S

SQL Change Guard

81 posts