PostgreSQL Pemicu: Buat, Daftar & Jatuhkan dengan Contoh
โก Ringkasan Cerdas
PostgreSQL Trigger adalah fungsi yang berjalan secara otomatis ketika terjadi peristiwa INSERT, UPDATE, atau DELETE pada sebuah tabel, memungkinkan basis data untuk menegakkan aturan, mencatat perubahan, dan mengaudit data tanpa kode aplikasi tambahan.

Apa yang dimaksud dengan Pemicu PostgreSQL?
A PostgreSQL Pelatuk Trigger adalah fungsi yang dipicu secara otomatis ketika terjadi peristiwa basis data pada objek basis data, misalnya, sebuah tabel. Contoh peristiwa basis data yang dapat mengaktifkan trigger meliputi INSERT, UPDATE, DELETE, dan lain-lain. Selain itu, ketika Anda membuat trigger untuk sebuah tabel, trigger tersebut akan dihapus secara otomatis ketika tabel tersebut dihapus.
Bagaimana Pemicu digunakan di PostgreSQL?
Trigger dapat ditandai dengan operator FOR EACH ROW selama pembuatannya. Trigger tersebut akan dipanggil sekali untuk setiap baris yang dimodifikasi oleh operasi tersebut. Trigger juga dapat ditandai dengan operator FOR EACH STATEMENT selama pembuatannya. Trigger ini hanya akan dieksekusi sekali untuk operasi tertentu.
PostgreSQL Buat Pemicu
Untuk membuat trigger, kita menggunakan fungsi CREATE TRIGGER. Berikut ini sintaks untuk fungsinya:
CREATE TRIGGER trigger-name [BEFORE|AFTER|INSTEAD OF] event-name ON table-name [ -- Trigger logic ];
Nama pemicu adalah nama pemicunya.
BEFORE, AFTER, dan INSTEAD OF adalah kata kunci yang menentukan kapan trigger akan dipanggil.
Nama peristiwa adalah nama peristiwa yang akan menyebabkan pemicu dipanggil. Ini bisa jadi MEMASUKKAN, PERBARUI, HAPUS, dll.
Nama tabel adalah nama tabel tempat pemicu dibuat.
Jika pemicu ingin dibuat untuk operasi INSERT, kita harus menambahkan parameter nama kolom ON.
Sintaks berikut menunjukkan hal ini:
CREATE TRIGGER trigger-name AFTER INSERT ON column-name ON table-name [ -- Trigger logic ];
PostgreSQL Buat Contoh Pemicu
Kami akan menggunakan tabel Harga yang diberikan di bawah ini:
Harga:
Mari kita buat tabel lain, Price_Audits, di mana kita akan mencatat perubahan yang dilakukan pada tabel Price:
CREATE TABLE Price_Audits ( book_id INT NOT NULL, entry_date text NOT NULL );
Sekarang kita dapat mendefinisikan fungsi baru bernama auditfunc:
CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$ BEGIN INSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp); RETURN NEW; END; $my_table$ LANGUAGE plpgsql;
Fungsi di atas akan memasukkan record ke dalam tabel Price_Audits termasuk id baris baru dan waktu pembuatan record.
Sekarang setelah kita memiliki fungsi pemicu, kita harus mengikatnya ke tabel Harga kita. Kita akan memberi nama pemicu tersebut price_trigger. Sebelum catatan baru dibuat, fungsi pemicu akan dipanggil secara otomatis untuk mencatat perubahan. Berikut pemicunya:
CREATE TRIGGER price_trigger AFTER INSERT ON Price FOR EACH ROW EXECUTE PROCEDURE auditfunc();
Mari kita masukkan catatan baru ke dalam tabel Harga:
INSERT INTO Price VALUES (3, 400);
Setelah kita memasukkan data ke dalam tabel Harga, seharusnya data juga dimasukkan ke dalam tabel Price_Audits karena pemicu yang telah kita buat. Mari kita periksa:
SELECT * FROM Price_Audits;
Ini akan mengembalikan hal berikut:
Pemicunya berhasil.
PostgreSQL Pemicu Daftar
Semua pemicu yang Anda buat PostgreSQL disimpan di tabel pg_trigger. Untuk melihat daftar trigger yang Anda miliki di Database, kueri tabel dengan menjalankan perintah SELECT seperti yang ditunjukkan di bawah ini:
SELECT tgname FROM pg_trigger;
Ini mengembalikan yang berikut:
Kolom tgname pada tabel pg_trigger menunjukkan nama pemicu.
PostgreSQL Pemicu Jatuh
Saat pemicu tidak lagi dibutuhkan, Anda dapat melepasnya dengan mudah. โโUntuk menjatuhkan PostgreSQL pemicu, kita menggunakan pernyataan DROP TRIGGER dengan sintaks berikut:
DROP TRIGGER [IF EXISTS] trigger-name
ON table-name [ CASCADE | RESTRICT ];
Parameter trigger-name menunjukkan nama trigger yang akan dihapus.
Nama tabel menunjukkan nama tabel yang pemicunya akan dihapus.
Klausa IF EXISTS mencoba menghapus pemicu yang ada. Jika Anda mencoba menghapus pemicu yang tidak ada tanpa menggunakan klausa IF EXISTS, Anda akan mendapatkan kesalahan.
Opsi CASCADE akan membantu Anda menjatuhkan semua objek yang bergantung pada pemicu secara otomatis.
Jika Anda menggunakan opsi RESTRICT, pemicu tidak akan dihapus jika objek bergantung padanya.
Untuk Contoh:
Untuk menghapus pemicu bernama example_trigger pada tabel Perusahaan, jalankan perintah berikut:
DROP TRIGGER example_trigger IF EXISTS
ON Company;
Menggunakan pgAdmin
Sekarang mari kita lihat bagaimana ketiga tindakan tersebut dilakukan menggunakan pgAdmin.
Cara Membuat Pemicu di PostgreSQL menggunakan pgAdmin
Berikut cara membuat pemicu di PostgreSQL menggunakan pgAdmin:
Langkah 1) Masuk ke akun pgAdmin Anda
Buka pgAdmin dan masuk ke akun Anda menggunakan kredensial Anda.
Langkah 2) Buat Basis Data Demo
- Dari bilah navigasi di sebelah kiri, klik Database.
- Klik Demo.
Langkah 3) Ketik Kueri
Untuk membuat tabel Price_Audits, ketikkan kueri berikut di editor:
CREATE TABLE Price_Audits ( book_id INT NOT NULL, entry_date text NOT NULL )
Langkah 4) Jalankan Kueri
Klik tombol Jalankan.
Langkah 5) Jalankan Code untuk auditfunc
Jalankan kode berikut untuk mendefinisikan fungsi auditfunc:
CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$ BEGIN INSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp); RETURN NEW; END; $my_table$ LANGUAGE plpgsql
Langkah 6) Jalankan Code untuk membuat pemicu
Jalankan kode berikut untuk membuat pemicu price_trigger:
CREATE TRIGGER price_trigger AFTER INSERT ON Price FOR EACH ROW EXECUTE PROCEDURE auditfunc()
Langkah 7) Masukkan catatan baru
- Jalankan perintah berikut untuk memasukkan catatan baru ke dalam tabel Harga:
INSERT INTO Price VALUES (3, 400)
- Jalankan perintah berikut untuk memeriksa apakah suatu catatan telah dimasukkan ke dalam tabel Price_Audits:
SELECT * FROM Price_Audits
Ini harus mengembalikan yang berikut:
Langkah 8) Periksa isi tabel
Mari kita periksa isi tabel Price_Audits.
Daftar Pemicu menggunakan pgAdmin
Langkah 1) Jalankan perintah berikut untuk memeriksa pemicu di database Anda:
SELECT tgname FROM pg_trigger
Ini mengembalikan yang berikut:
Menjatuhkanping Pemicu yang menggunakan pgAdmin
Untuk menghapus pemicu bernama example_trigger pada tabel Perusahaan, jalankan perintah berikut:
DROP TRIGGER example_trigger IF EXISTS
ON Company
Unduh Database yang digunakan dalam Tutorial ini







