PL/SQL - Triggers: Panduananda Kawan Anda ke Otomatisasi Database
Hai sana, para ahli basisdata masa depan! Hari ini, kita akan melihat dunia magis PL/SQL triggers. Jangan khawatir jika Anda baru dalam pemrograman - saya akan menjadi panduan andalan Anda dalam petualangan ini. Pada akhir tutorial ini, Anda akan menciptakan trigger seperti seorang ahli!
Apa Itu Triggers?
Bayangkan Anda adalah seorang perpustakaawan ( ikut saya disini ). Setiap kali buku dipinjam, Anda perlu memperbarui catatan, memeriksa apakah buku itu terlambat, dan mungkin mengirimkan pengingat ke peminjam. Melakukan ini secara manual untuk setiap buku akan sangat lelah! Itulah tempat trigger berada.
Dalam dunia basisdata, trigger seperti para elf kecil yang membantu secara otomatis melakukan tindakan saat terjadi peristiwa tertentu. Mereka adalah bagian kode yang "trigger" sebagai tanggapan terhadap operasi basisdata tertentu.
Membuat Triggers: Mari Kita Mulai!
Sekarang, mari kita buat trigger pertama kita. Kita akan mulai dari yang sederhana dan kemudian naik tingkat.
Struktur Dasar Trigger
Berikut adalah struktur umum trigger:
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
ON table_name
[FOR EACH ROW]
[WHEN condition]
DECLARE
-- Declarasi variabel
BEGIN
-- Tubuh trigger
EXCEPTION
-- Penanganan pengecualian
END;
/
Jangan khawatir! Kita akan membongkar ini secara berkelanjutan.
Contoh 1: Trigger "Hello, World!" Sederhana
Mari kita buat trigger yang mengatakan "Hello, World!" setiap kali baris baru dimasukkan ke dalam tabel:
CREATE OR REPLACE TRIGGER hello_world_trigger
AFTER INSERT ON employees
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello, World! Seorang karyawan baru ditambahkan!');
END;
/
Apa yang terjadi disini?
-
CREATE OR REPLACE TRIGGER
: Ini memberitahu basisdata bahwa kita sedang menciptakan trigger baru (atau menggantikan yang sudah ada). -
AFTER INSERT ON employees
: Trigger kita akan diperankan setelah baris baru dimasukkan ke dalam tabel 'employees'. -
BEGIN...END
: Ini adalah tempat kita menempatkan logika trigger. -
DBMS_OUTPUT.PUT_LINE
: Ini hanya cara menarik untuk mencetak teks.
Contoh 2: Melog Perubahan
Mari kita buat trigger yang lebih berguna yang melog perubahan ke tabel 'employees':
CREATE OR REPLACE TRIGGER log_salary_changes
AFTER UPDATE OF salary ON employees
FOR EACH ROW
BEGIN
INSERT INTO salary_change_log (employee_id, old_salary, new_salary, change_date)
VALUES (:OLD.employee_id, :OLD.salary, :NEW.salary, SYSDATE);
END;
/
Apa yang baru disini?
-
AFTER UPDATE OF salary
: Trigger ini akan diperankan hanya saat kolom 'salary' diperbarui. -
FOR EACH ROW
: Ini berarti trigger akan diperankan untuk setiap baris yang terpengaruh oleh UPDATE. -
:OLD
dan:NEW
: Ini merujuk ke nilai lama dan baru baris yang diperbarui.
Mengaktifkan Trigger: Membuat Magic Terjadi
Sekarang kita sudah menciptakan trigger, bagaimana kita membuat mereka diperankan? Sederhana! Dengan melakukan operasi basisdata yang mereka pantau.
Contoh 3: Menembakkan Trigger
Mari kita lihat trigger kita dalam aksi:
-- Ini akan menembakkan 'hello_world_trigger'
INSERT INTO employees (employee_id, name, salary)
VALUES (1, 'John Doe', 50000);
-- Ini akan menembakkan 'log_salary_changes' trigger
UPDATE employees
SET salary = 55000
WHERE employee_id = 1;
Ketika Anda menjalankan perintah ini, di belakang layar, trigger kita mulai beraksi!
Jenis Trigger: Tabel Referensi Cepat
Berikut adalah tabel referensi singkat tentang jenis trigger yang berbeda:
Jenis Trigger | Deskripsi | Contoh Penggunaan |
---|---|---|
BEFORE | Diperankan sebelum tindakan pemicu | Memvalidasi atau memodifikasi data masukan sebelum dimasukkan |
AFTER | Diperankan setelah tindakan pemicu | Melog perubahan atau memperbarui tabel terkait |
INSERT | Diperankan saat operasi INSERT | Secara otomatis membuat catatan terkait |
UPDATE | Diperankan saat operasi UPDATE | Melacak perubahan data sepanjang waktu |
DELETE | Diperankan saat operasi DELETE | Menjaga integritas referensi |
INSTEAD OF | Digunakan dengan view untuk menentukan operasi insert, update, atau delete khusus | Implementasi update view kompleks |
Penutup: Anda sekarang Pemula Trigger!
Selamat! Anda sudah mengambil langkah pertama ke dalam dunia PL/SQL triggers. Kita telah melihat dasar-dasar membuat trigger, melihat mereka dalam aksi, dan bahkan melihat jenis trigger yang berbeda.
Ingat, trigger adalah alat yang kuat, tetapi dengan kekuatan yang besar datang tanggung jawab yang besar. Gunakan mereka bijaksana, dan mereka akan membuat kerja basisdata Anda lebih cerdas, bukan lebih keras.
Terus latihan, tetap curiga, dan sebelum Anda sadari, Anda akan menjadi maestro trigger! Semangat coding, para ahli basisdata masa depan!
Credits: Image by storyset