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.

  • โšก Definisi: Trigger adalah fungsi yang dipanggil secara otomatis saat terjadi peristiwa pada basis data seperti INSERT, UPDATE, atau DELETE.
  • ๐Ÿ” Cakupan: FOR EACH ROW menjalankan trigger sekali untuk setiap baris yang terpengaruh, sedangkan FOR EACH STATEMENT menjalankannya sekali untuk setiap operasi.
  • ๏ธ Membuat: CREATE TRIGGER mengikat sebuah fungsi ke sebuah tabel dan mengatur waktu SEBELUM, SETELAH, atau SEBAGAI PENGGANTI.
  • ๐Ÿ“‹ Daftar: Lakukan query pada katalog pg_trigger dengan SELECT tgname untuk melihat semua trigger yang ada di database.
  • ๏ธ Penurunan: DROP TRIGGER menghapus sebuah trigger, dan IF EXISTS mencegah kesalahan ketika trigger tersebut hilang.
  • ๐Ÿค– Bantuan AI: Asisten AI menghasilkan fungsi pemicu dan menyarankan waktu SEBELUM atau SESUDAH dari permintaan dalam bahasa sederhana.

PostgreSQL pemicu

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:

PostgreSQL Buat Pemicu

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:

PostgreSQL Buat Pemicu

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:

PostgreSQL Pemicu Daftar

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

  1. Dari bilah navigasi di sebelah kiri, klik Database.
  2. Klik Demo.

Buat Pemicu di PostgreSQL menggunakan pgAdmin

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.

Buat Pemicu di PostgreSQL menggunakan pgAdmin

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

  1. Jalankan perintah berikut untuk memasukkan catatan baru ke dalam tabel Harga:
INSERT INTO Price
VALUES (3, 400)
  1. Jalankan perintah berikut untuk memeriksa apakah suatu catatan telah dimasukkan ke dalam tabel Price_Audits:
SELECT * FROM Price_Audits

Ini harus mengembalikan yang berikut:

Buat Pemicu di PostgreSQL menggunakan pgAdmin

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:

Daftar Pemicu menggunakan pgAdmin

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

Pertanyaan Umum Demo Slot

Trigger BEFORE dijalankan sebelum perubahan baris ditulis, sehingga dapat memodifikasi atau menolak baris tersebut. Trigger AFTER dijalankan setelah perubahan disimpan, sesuai untuk tugas pencatatan dan audit.

Trigger INSTEAD OF didefinisikan pada sebuah view, bukan pada tabel. Trigger ini menggantikan perintah INSERT, UPDATE, atau DELETE dengan logika kustom, sehingga view yang hanya dapat dibaca menjadi dapat ditulis.

Fungsi pemicu biasanya ditulis dalam PL/pgSQL. PostgreSQL juga mendukung PL/Python, PL/Perl, PL/Tcl, dan C, sehingga Anda dapat memilih bahasa yang sesuai dengan logika Anda.

Gunakan perintah ALTER TABLE table-name DISABLE TRIGGER trigger-name untuk menonaktifkannya, dan ENABLE TRIGGER untuk mengaktifkannya kembali. Ini menghindari penghapusan.ping dan menciptakan kembali pemicu selama pemuatan massal.

Ya. Setiap pemicu menambahkan beban kerja ke setiap baris atau pernyataan yang terpengaruh, sehingga logika pemicu yang berat dapat memperlambat penulisan. Jaga agar fungsi pemicu tetap singkat dan indeks kolom apa pun yang mereka kueri.

Ya. Jika sebuah trigger mengubah tabel lain yang juga memiliki trigger, maka trigger tersebut juga akan aktif, sehingga menciptakan trigger berantai. PostgreSQL Membatasi kedalaman penestingan untuk mencegah perulangan tak terbatas.

Asisten pengkodean AI mengubah permintaan dalam bahasa biasa menjadi pernyataan CREATE TRIGGER dan fungsi pemicu yang lengkap, menyarankan waktu BEFORE atau AFTER, dan menjelaskan PL/pgSQL yang dihasilkan untuk tinjauan cepat.

Ya. Alat-alat seperti pgai dan asisten berbasis GPT menerjemahkan aturan yang dijelaskan ke dalam SQL pemicu, dan dapat membangun pemicu INSERT yang secara otomatis memberi tag atau memvalidasi data baru saat data tersebut tiba.

Ringkaslah postingan ini dengan: