Pemicu PostgreSQL: Buat, Jatuhkan Contoh

Daftar Isi:

Anonim

Apa itu Pemicu Postgresql?

Pemicu PostgreSQL adalah fungsi yang dipicu secara otomatis saat peristiwa database terjadi pada objek database. Misalnya meja.

Contoh kejadian database yang dapat mengaktifkan pemicu termasuk INSERT, UPDATE, DELETE, dll. Selain itu, saat Anda membuat pemicu untuk tabel, pemicu akan dihapus secara otomatis saat tabel tersebut dihapus.

Dalam Tutorial PostgreSQL ini, Anda akan mempelajari hal-hal berikut:

  • Apa itu Pemicu Postgresql?
  • Bagaimana Pemicu digunakan di POSRGREQL?
  • Membuat Pemicu
  • Menggunakan pgAdmin
  • Menjatuhkan Pemicu

Bagaimana Pemicu digunakan di POSRGREQL?

Pemicu dapat ditandai dengan operator UNTUK SETIAP ROW selama pembuatannya. Pemicu seperti itu akan dipanggil sekali untuk setiap baris yang dimodifikasi oleh operasi. Pemicu juga dapat ditandai dengan operator UNTUK SETIAP PERNYATAAN selama pembuatannya. Pemicu ini akan dijalankan hanya sekali untuk operasi tertentu.

Membuat Pemicu

Untuk membuat pemicu, kami menggunakan fungsi CREATE TRIGGER. Berikut adalah sintaks untuk fungsinya:

CREATE TRIGGER trigger-name [BEFORE|AFTER|INSTEAD OF] event-nameON table-name[-- Trigger logic];

Nama pemicu adalah nama pemicu.

SEBELUM, SETELAH, dan BUKAN adalah kata kunci yang menentukan kapan pemicu akan dipanggil.

Nama-peristiwa adalah nama peristiwa yang akan menyebabkan pemicu dipanggil. Ini bisa berupa INSERT, UPDATE, DELETE, dll.

Nama tabel adalah nama tabel tempat pemicu akan dibuat.

Jika pemicu akan dibuat untuk operasi INSERT, kita harus menambahkan parameter nama kolom ON.

Sintaks berikut menunjukkan ini:

CREATE TRIGGER trigger-name AFTER INSERT ON column-nameON table-name[-- Trigger logic];

Sebagai contoh:

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 dibuat 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$BEGININSERT 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 record dibuat.

Sekarang kita memiliki fungsi pemicu, kita harus mengikatnya ke tabel Price kita. Kami akan memberi pemicu dengan nama price_trigger. Sebelum rekaman baru dibuat, fungsi pemicu akan dipanggil secara otomatis untuk mencatat perubahan. Inilah pemicunya:

CREATE TRIGGER price_trigger AFTER INSERT ON PriceFOR EACH ROW EXECUTE PROCEDURE auditfunc();

Mari kita masukkan catatan baru ke dalam tabel Harga:

INSERT INTO PriceVALUES (3, 400);

Sekarang kita telah memasukkan catatan ke dalam tabel Harga, catatan juga harus dimasukkan ke dalam tabel Price_Audit. Ini akan menjadi hasil dari pemicu yang telah kita buat pada tabel Harga. Mari kita periksa ini:

SELECT * FROM Price_Audits;

Ini akan mengembalikan yang berikut:

Pemicunya bekerja dengan sukses.

Daftar pemicu

Semua pemicu yang Anda buat di PostgreSQL disimpan di tabel pg_trigger. Untuk melihat daftar pemicu yang Anda miliki di database, buat kueri tabel dengan menjalankan perintah SELECT seperti yang ditunjukkan di bawah ini:

SELECT tgname FROM pg_trigger;

Ini mengembalikan yang berikut:

Kolom tgname dari tabel pg_trigger menunjukkan nama pemicu.

Menjatuhkan pemicu

Untuk menjatuhkan pemicu PostgreSQL, kami menggunakan pernyataan DROP TRIGGER dengan sintaks berikut:

DROP TRIGGER [IF EXISTS] trigger-nameON table-name [ CASCADE | RESTRICT ];

Parameter nama pemicu menunjukkan nama pemicu yang akan dihapus.

Nama tabel menunjukkan nama tabel tempat pemicu akan dihapus.

Klausa IF EXISTS mencoba menghapus pemicu yang ada. Jika Anda mencoba untuk menghapus pemicu yang tidak ada tanpa menggunakan klausa JIKA ADA, Anda akan mendapatkan pesan kesalahan.

Opsi CASCADE akan membantu Anda untuk menjatuhkan semua objek yang bergantung pada pemicu secara otomatis.

Jika Anda menggunakan opsi BATAS, pemicu tidak akan dihapus jika objek bergantung padanya.

Sebagai contoh:

Untuk menghapus pemicu bernama example_trigger pada harga tabel, kami menjalankan perintah berikut:

Untuk menjatuhkan pemicu bernama example_trigger di tabel Perusahaan, jalankan perintah berikut:

DROP TRIGGER example_trigger IF EXISTSON Company;

Menggunakan pgAdmin

Sekarang mari kita lihat bagaimana ketiga tindakan dilakukan menggunakan pgAdmin.

Membuat Pemicu

Untuk mencapai hal yang sama melalui pgAdmin, lakukan ini:

Langkah 1) Masuk ke akun pgAdmin Anda.

Langkah 2)

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

Langkah 3) Untuk membuat tabel Price_Audits, ketik editor kueri:

CREATE TABLE Price_Audits (book_id INT NOT NULL,entry_date text NOT NULL)

Langkah 4) Klik tombol Execute.

Langkah 5) Jalankan kode berikut untuk menentukan fungsi auditfunc:

CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$BEGININSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp);RETURN NEW;END;$my_table$ LANGUAGE plpgsql

Langkah 6) Jalankan kode berikut untuk membuat pemicu price_trigger:

CREATE TRIGGER price_trigger AFTER INSERT ON PriceFOR EACH ROW EXECUTE PROCEDURE auditfunc()

Langkah 7)

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

    Ini harus mengembalikan yang berikut:

Langkah 8) Mari kita periksa isi tabel Price_Audits:

Daftar pemicu

Langkah 1) Jalankan perintah berikut untuk memeriksa pemicu di database Anda:

SELECT tgname FROM pg_trigger

Ini mengembalikan yang berikut:

Menjatuhkan Pemicu

Untuk menjatuhkan pemicu bernama example_trigger di tabel Perusahaan, jalankan perintah berikut:

DROP TRIGGER example_trigger IF EXISTSON Company

Ringkasan:

  • Pemicu PostgreSQL merujuk ke fungsi yang dipicu secara otomatis saat peristiwa database terjadi pada objek database, seperti tabel.
  • Contoh peristiwa database tersebut termasuk INSERT, UPDATE, DELETE, dll.
  • Pemicu hanya ada selama masa pakai objek database yang dibuatnya.
  • Jika objek database dihapus, pemicunya juga akan dihapus.
  • Pemicu PostgreSQL dibuat menggunakan pernyataan CREATE TRIGGER.
  • Setiap pemicu dikaitkan dengan fungsi yang menyatakan apa yang akan dilakukan pemicu saat dipanggil.

Unduh Basis Data yang digunakan dalam Tutorial ini