PostgreSQL Pemicu: Buat, Daftar & Jatuhkan dengan Contoh
Apa yang dimaksud dengan Pemicu PostgreSQL?
A PostgreSQL Pelatuk adalah fungsi yang dipicu secara otomatis ketika peristiwa database terjadi pada objek database. Misalnya saja sebuah meja. Contoh event database yang dapat mengaktifkan trigger antara lain INSERT, UPDATE, DELETE, dll. Selain itu, saat Anda membuat trigger untuk sebuah tabel, trigger tersebut akan dihilangkan secara otomatis saat tabel tersebut dihapus.
Bagaimana Pemicu digunakan di PostgreSQL?
Pemicu dapat ditandai dengan operator FOR EACH ROW selama pembuatannya. Pemicu seperti itu akan dipanggil satu kali untuk setiap baris yang diubah oleh operasi. Pemicu juga dapat ditandai dengan operator UNTUK SETIAP PERNYATAAN selama pembuatannya. Pemicu 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 kita memiliki fungsi trigger, kita harus mengikatnya ke tabel Harga. Kami akan memberi pemicunya nama price_trigger. Sebelum catatan baru dibuat, fungsi pemicu akan dipanggil secara otomatis untuk mencatat perubahan. Inilah 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);
Sekarang kita telah memasukkan catatan ke dalam tabel Harga, catatan juga harus dimasukkan ke dalam tabel Price_Audit. Hal ini disebabkan oleh trigger yang kita buat pada tabel Price. Mari kita periksa ini:
SELECT * FROM Price_Audits;
Ini akan mengembalikan hal berikut:
Pemicunya berhasil.
Pemicu Daftar Postgres
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.
Pemicu Penurunan Postgres
Untuk menjatuhkan a 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 Harga, kita jalankan perintah berikut:
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 dilakukan menggunakan pgAdmin.
Cara Membuat Pemicu di PostgreSQL menggunakan pgAdmin
Inilah cara Anda membuat pemicu di Postgres 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 query 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 Kode 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 Kode 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:
Menjatuhkan Pemicu menggunakan pgAdmin
Untuk menghapus pemicu bernama example_trigger pada tabel Perusahaan, jalankan perintah berikut:
DROP TRIGGER example_trigger IF EXISTS ON Company
Kesimpulan
- A PostgreSQL trigger mengacu pada fungsi yang dipicu secara otomatis ketika peristiwa database terjadi pada objek database, seperti tabel.
- Contoh kejadian database tersebut termasuk INSERT, UPDATE, DELETE, dll.
- Pemicu hanya ada selama masa hidup objek database tempat pemicu tersebut dibuat.
- Jika objek database dihapus, trigger juga akan terhapus.
- PostgreSQL pemicu dibuat menggunakan pernyataan CREATE TRIGGER.
- Setiap pemicu dikaitkan dengan fungsi yang menyatakan apa yang akan dilakukan pemicu ketika pemicu tersebut dipanggil.
Unduh Database yang digunakan dalam Tutorial ini