ID (Indonesia) Translation

SQLite - Triggers: Panduan Ramah untuk Pemula

Hai teman-teman yang sedang belajar! Hari ini, kita akan memulai perjalanan menarik ke dunia trigger SQLite. Jangan khawatir jika Anda belum pernah menulis baris kode sebelumnya - saya akan menjadi panduan ramah Anda, dan kita akan mengexploreasi topik ini secara berlangkah-langkah. Pada akhir panduan ini, Anda akan dapat membuat trigger seperti seorang ahli!

SQLite - Triggers

Apa Itu Trigger?

Sebelum kita masuk ke dalam, mari bayangkan Anda menjalankan sebuah perpustakaan kecil. Setiap kali buku dipinjam, Anda perlu memperbarui beberapa catatan: tandai buku tersebut sebagai tidak tersedia, catat tanggal peminjaman, dan mungkin bahkan mengirimkan email pengingat. Apakah bagus jika semua tindakan ini dapat terjadi secara otomatis saat buku dipinjam? Itu tepat apa yang trigger lakukan dalam database!

Dalam SQLite, trigger adalah objek database yang secara otomatis dieksekusi saat terjadi peristiwa database yang ditentukan. Itu seperti mengatur efek domino - saat satu hal terjadi, secara otomatis akan menyebabkan hal lain terjadi.

Membuat Trigger Pertama Anda

Mari mulai dengan contoh sederhana. Bayangkan kita memiliki tabel books di database perpustakaan kita:

CREATE TABLE books (
id INTEGER PRIMARY KEY,
title TEXT,
author TEXT,
available INTEGER
);

Sekarang, mari kita buat trigger yang secara otomatis menetapkan buku sebagai tidak tersedia (0) saat itu dipinjam:

CREATE TRIGGER make_unavailable
AFTER INSERT ON borrowings
FOR EACH ROW
BEGIN
UPDATE books SET available = 0 WHERE id = NEW.book_id;
END;

mariuraikan ini:

  1. CREATE TRIGGER make_unavailable: Kita sedang membuat trigger baru bernama "make_unavailable".
  2. AFTER INSERT ON borrowings: Trigger ini akan diberikan setelah baris baru dimasukkan ke tabel "borrowings".
  3. FOR EACH ROW: Trigger akan dieksekusi sekali untuk setiap baris yang terpengaruh oleh operasi INSERT.
  4. BEGIN ... END: Blok ini berisi tindakan yang akan dilakukan trigger.
  5. UPDATE books SET available = 0 WHERE id = NEW.book_id: Ini memperbarui tabel "books", menetapkan kolom "available" ke 0 untuk buku yang dipinjam.

Jenis Trigger

SQLite mendukung beberapa jenis trigger. Mari kita lihat:

1. Trigger BEFORE

Trigger ini diberikan sebelum operasi database terjadi. Mereka sangat cocok untuk memvalidasi atau memodifikasi data sebelum data dimasukkan atau diperbarui.

CREATE TRIGGER check_author
BEFORE INSERT ON books
FOR EACH ROW
BEGIN
SELECT CASE
WHEN NEW.author IS NULL THEN
RAISE(ABORT, 'Penulis tidak boleh kosong')
END;
END;

Trigger ini memeriksa apakah penulis kosong sebelum memasukkan buku baru, dan mengeluarkan kesalahan jika itu terjadi.

2. Trigger AFTER

Kita sudah melihat trigger AFTER dalam contoh pertama kita. Trigger ini diberikan setelah operasi database telah terjadi. Mereka berguna untuk menjaga data terkait atau mencatat perubahan.

3. Trigger INSTEAD OF

Trigger ini adalah trigger khusus yang hanya digunakan pada views. Mereka memungkinkan Anda menentukan perilaku khusus saat mencoba memodifikasi data melalui view.

CREATE VIEW available_books AS
SELECT * FROM books WHERE available = 1;

CREATE TRIGGER update_available_books
INSTEAD OF UPDATE ON available_books
FOR EACH ROW
BEGIN
UPDATE books SET
title = NEW.title,
author = NEW.author
WHERE id = OLD.id;
END;

Trigger ini memungkinkan pembaruan pada view "available_books", yang kemudian memperbarui tabel "books" yang mendasarinya.

Peristiwa Trigger

Trigger dapat diatur untuk diberikan pada berbagai peristiwa:

Peristiwa Deskripsi
INSERT Diberikan saat baris baru dimasukkan ke tabel
UPDATE Diberikan saat baris di tabel diperbarui
DELETE Diberikan saat baris dihapus dari tabel

Anda bahkan dapat menentukan beberapa peristiwa untuk trigger tunggal:

CREATE TRIGGER log_changes
AFTER INSERT OR UPDATE OR DELETE ON books
FOR EACH ROW
BEGIN
INSERT INTO log (action, book_id, timestamp)
VALUES (
CASE
WHEN NEW.id IS NOT NULL AND OLD.id IS NULL THEN 'INSERT'
WHEN NEW.id IS NULL AND OLD.id IS NOT NULL THEN 'DELETE'
ELSE 'UPDATE'
END,
COALESCE(NEW.id, OLD.id),
DATETIME('NOW')
);
END;

Trigger ini mencatat semua perubahan (penyisipan, pembaruan, dan penghapusan) ke tabel "books".

Menampilkan Trigger

Sekarang kita sudah membuat beberapa trigger, Anda mungkin bertanya-tanya, "Bagaimana saya bisa melihat semua trigger di database saya?" Pernyataan ini bagus! SQLite menyediakan cara mudah untuk menampilkan semua trigger:

SELECT name, sql FROM sqlite_master WHERE type = 'trigger';

Query ini akan menunjukkan nama semua trigger dan SQL yang digunakan untuk menciptakan mereka. Itu seperti melihat ke belakang tabir untuk melihat bagaimana magik terjadi!

Menghapus Trigger

kadang-kadang, Anda mungkin perlu menghapus trigger. Mungkin itu tidak lagi diperlukan, atau Anda ingin menggantinya dengan yang lain. Menghapus trigger sangat mudah:

DROP TRIGGER IF EXISTS make_unavailable;

Perintah ini menghapus trigger "make_unavailable" yang kita buat sebelumnya. Klause IF EXISTS adalah jaringan keselamatan - itu mencegah kesalahan jika trigger tidak ada.

Kesimpulan

Selamat! Anda baru saja mengambil langkah pertama ke dunia trigger SQLite. Kita telah melihat membuat trigger, jenis trigger, peristiwa trigger, menampilkan trigger, dan bahkan menghapus trigger.

Ingat, trigger adalah alat yang kuat yang dapat membuat database Anda bekerja cerdas, bukan keras. Mereka seperti para elf kecil yang bekerja di belakang layar, menjaga data Anda konsisten dan terupdate.

Sekarang Anda teruskan perjalanan Anda dalam pemrograman, Anda akan menemukan lebih banyak penggunaan untuk trigger. Mereka mungkin terlihat sedikit sulit pada awalnya, tapi dengan latihan, Anda akan dapat membuat sistem trigger kompleks yang membuat database Anda berdansa!

Terus mencoba, terus belajar, dan terutama, bersenang-senang! Dunia database luas dan menarik, dan Anda baru saja menggores permukaannya. Siapa tahu apa saja yang menarik Anda akan buat berikutnya?

Credits: Image by storyset