0Pricing
SQL Academy · Pelajaran

Anatomi Pemicu: BEFORE/AFTER, FOR EACH ROW

Pahami waktu pemicu, granularitas (baris dibandingkan pernyataan), serta arti NEW dan OLD di dalam fungsi pemicu

Anatomi Pemicu: BEFORE/AFTER, FOR EACH ROW adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.

Apa Itu Pemicu

Pemicu adalah fungsi yang secara otomatis dipanggil oleh basis data sebelum atau sesudah INSERT, UPDATE, DELETE, atau TRUNCATE pada sebuah tabel.

Dua Bagian: Fungsi + Pemicu

Anda menulis fungsi yang mengembalikan trigger, lalu mengaitkannya dengan sebuah tabel:

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 vs AFTER

  • BEFORE — dijalankan sebelum baris ditulis; dapat mengubah NEW
  • AFTER — dijalankan setelah penulisan; untuk efek samping (audit, notifikasi)

FOR EACH ROW vs FOR EACH STATEMENT

  • FOR EACH ROW — dijalankan sekali untuk setiap baris yang terdampak; NEW dan OLD tersedia
  • FOR EACH STATEMENT — dijalankan sekali untuk setiap pernyataan, tanpa akses per baris

NEW dan OLD

Di dalam pemicu baris:

  • NEW — baris baru (INSERT, UPDATE)
  • OLD — baris sebelumnya (UPDATE, DELETE)

Nilai Kembalian Itu Penting

Untuk pemicu baris BEFORE:

  • Kembalikan NEW untuk melanjutkan dengan baris tersebut
  • Kembalikan NEW yang telah diubah untuk mengubah data yang disimpan
  • Kembalikan NULL untuk membatalkan operasi pada baris tersebut

Filter WHEN

Pemicu bersyarat:

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 column

BEFORE/AFTER UPDATE dapat dijalankan hanya ketika kolom tertentu berubah:

CREATE TRIGGER ... AFTER UPDATE OF status ON orders ...

Beberapa Pemicu

Pemicu dijalankan dalam urutan alfabet berdasarkan nama pemicu. Gunakan awalan (00_, 10_, ...) untuk mengendalikan urutan.

Kinerja Pemicu

Pemicu baris dijalankan untuk setiap baris — logika berat di dalam pemicu baris × DML besar = lambat. Untuk efek samping dalam jumlah besar, lebih baik gunakan pemicu pernyataan.

Menonaktifkan Pemicu

Lewati sementara:

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;

Rekursi Pemicu

UPDATE pemicu pada tabel yang sama akan menjalankan pemicu tersebut lagi. Gunakan penjaga (pg_trigger_depth()) atau rancang dengan hati-hati.

Ringkasan

Pemicu mengotomatiskan reaksi per baris.

  • Fungsi yang mengembalikan TRIGGER + CREATE TRIGGER
  • BEFORE untuk mengubah data, AFTER untuk efek samping
  • NEW/OLD untuk mengakses baris
  • WHEN dan OF column untuk memilih secara lebih spesifik

Pemeriksaan Singkat

Anda ingin memperbarui kolom updated_at secara otomatis setiap kali ada perubahan pada baris. Konfigurasi pemicu mana yang tepat?

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Anatomi Pemicu: BEFORE/AFTER, FOR EACH ROW” gratis?

Ya — teks lengkap “Anatomi Pemicu: BEFORE/AFTER, FOR EACH ROW” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Anatomi Pemicu: BEFORE/AFTER, FOR EACH ROW”?

Pahami waktu pemicu, granularitas (baris dibandingkan pernyataan), serta arti NEW dan OLD di dalam fungsi pemicu Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai SQL Academy?

Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Anatomi Pemicu: BEFORE/AFTER, FOR EACH ROW” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?

Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Anatomi Pemicu: BEFORE/AFTER, FOR EACH ROW
  2. Dasar-Dasar Fungsi PL/pgSQL
  3. Blok DO dan Kode Anonim
  4. Mengaudit Tabel dengan Pemicu
← Kembali ke SQL Academy