Tetikleyici Anatomisi: BEFORE/AFTER, FOR EACH ROW
Tetikleyici zamanlamasını, ayrıntı düzeyini (satır veya ifade) ve bir tetikleyici işlevi içindeki NEW ile OLD'un anlamını öğrenin.
Tetikleyici Anatomisi: BEFORE/AFTER, FOR EACH ROW, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.
Tetikleyici Nedir
Tetikleyici, bir tablo üzerinde INSERT, UPDATE, DELETE veya TRUNCATE işleminden önce ya da sonra veritabanının otomatik olarak çağırdığı bir işlevdir.
İki Parça: İşlev + Tetikleyici
trigger döndüren bir işlev yazıp bunu bir tabloya bağlarsınız:
CREATE OR REPLACE FUNCTION set_updated_at()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at := NOW();
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trg_set_updated_at
BEFORE UPDATE ON users
FOR EACH ROW EXECUTE FUNCTION set_updated_at();BEFORE ve AFTER
- BEFORE — satır yazılmadan önce çalışır; NEW'i değiştirebilir
- AFTER — yazma işleminden sonra çalışır; yan etkiler (denetim, bildirimler) için kullanılır
FOR EACH ROW ve FOR EACH STATEMENT
- FOR EACH ROW — etkilenen her satır için bir kez çalışır;
NEWveOLDkullanılabilir - FOR EACH STATEMENT — ifade başına bir kez çalışır, satır bazında erişim sağlamaz
NEW ve OLD
Satır tetikleyicisinin içinde:
NEW— yeni satır (INSERT, UPDATE)OLD— önceki satır (UPDATE, DELETE)
Döndürülen Değer Önemlidir
BEFORE satır tetikleyicileri için:
- O satırla devam etmek için
NEWdöndürün - Depolanacak veriyi değiştirmek için değiştirilmiş
NEWdöndürün - O satırdaki işlemi iptal etmek için
NULLdöndürün
WHEN Filtresi
Koşullu çalıştırma:
CREATE TRIGGER trg_log_status
AFTER UPDATE OF status ON orders
FOR EACH ROW WHEN (OLD.status IS DISTINCT FROM NEW.status)
EXECUTE FUNCTION log_status_change();OF sütunu
BEFORE/AFTER UPDATE yalnızca belirli sütunlar değiştiğinde çalışabilir:
CREATE TRIGGER ... AFTER UPDATE OF status ON orders ...Birden Çok Tetikleyici
Tetikleyiciler, tetikleyici adına göre alfabetik sırayla çalışır. Sırayı denetlemek için önekler (00_, 10_, ...) kullanın.
Tetikleyici Performansı
Satır tetikleyicileri satır başına çalışır — bir satır tetikleyicisindeki ağır mantık × büyük DML = yavaşlık. Toplu yan etkiler için ifade tetikleyicilerini tercih edin.
Tetikleyicileri Devre Dışı Bırakma
Geçici olarak atlayın:
ALTER TABLE orders DISABLE TRIGGER trg_audit;
-- bulk load...
ALTER TABLE orders ENABLE TRIGGER trg_audit;
-- Disable ALL triggers (use carefully):
ALTER TABLE orders DISABLE TRIGGER ALL;Tetikleyici Özyinelemesi
Aynı tablo üzerinde yapılan bir tetikleyici UPDATE işlemi tetikleyiciyi yeniden çalıştırır. Koruyucular (pg_trigger_depth()) kullanın veya tasarımı dikkatle yapın.
Özet
Tetikleyiciler satır başına tepkileri otomatikleştirir.
- TRIGGER döndüren işlev + CREATE TRIGGER
- Değişiklik yapmak için BEFORE, yan etkiler için AFTER
- Satıra erişim için NEW/OLD
- Seçicilik için WHEN ve OF sütunu
Hızlı Kontrol
Her satır değişikliğinde bir updated_at sütununu otomatik olarak güncellemek istiyorsunuz. Hangi tetikleyici kurulumu gerekir?
Sıkça Sorulan Sorular
“Tetikleyici Anatomisi: BEFORE/AFTER, FOR EACH ROW” dersi ücretsiz mi?
Evet — “Tetikleyici Anatomisi: BEFORE/AFTER, FOR EACH ROW” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.
“Tetikleyici Anatomisi: BEFORE/AFTER, FOR EACH ROW” dersinde ne öğreneceğim?
Tetikleyici zamanlamasını, ayrıntı düzeyini (satır veya ifade) ve bir tetikleyici işlevi içindeki NEW ile OLD'un anlamını öğrenin. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
SQL Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Tetikleyici Anatomisi: BEFORE/AFTER, FOR EACH ROW” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Tetikleyici Anatomisi: BEFORE/AFTER, FOR EACH ROW
- PL/pgSQL İşlevlerinin Temelleri
- DO Blokları ve Anonim Kod
- Tabloları Tetikleyicilerle Denetleme