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:

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 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:

PostgreSQL Buat Pemicu

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:

Pemicu Daftar Postgres

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

  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 query 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 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

  1. Jalankan perintah berikut untuk memasukkan catatan baru ke dalam tabel Harga:
    INSERT INTO Price
    VALUES (3, 400)
  2. 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

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