0Pricing
SQL Academy · Ders

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; NEW ve OLD kullanı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 NEW döndürün
  • Depolanacak veriyi değiştirmek için değiştirilmiş NEW döndürün
  • O satırdaki işlemi iptal etmek için NULL dö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

  1. Tetikleyici Anatomisi: BEFORE/AFTER, FOR EACH ROW
  2. PL/pgSQL İşlevlerinin Temelleri
  3. DO Blokları ve Anonim Kod
  4. Tabloları Tetikleyicilerle Denetleme
← SQL Academy Sayfasına Dön