PostgreSQL Buat Pemicu Setelah INSERT/UPDATE/DELETE

Setiap kali tindakan perubahan yang ditentukan (SQL INSERT, UPDATE, DELETE, atau deklarasi TRUNCATE) dilakukan pada tabel yang ditentukan, pemicu adalah serangkaian peristiwa yang dieksekusi secara otomatis. Pemicu dapat digunakan untuk menerapkan aturan bisnis, mengotentikasi informasi input, dan memelihara jejak audit. Pemicu SQL diimplementasikan sesuai dengan format SQL. Ini mencakup struktur yang digunakan dalam beberapa bahasa pemrograman yang memungkinkan Anda untuk mendeklarasikan variabel lokal, memantau aliran proses dengan deklarasi, mengalokasikan hasil pernyataan ke variabel, dan menangani error. Selanjutnya, setelah Anda membuat pemicu untuk sesuatu, seperti tabel, pemicu segera dihapus segera setelah tabel dihapus. Kita akan melihat bagaimana Pemicu PostgreSQL berfungsi di seluruh segmen ini.

Sintaksis:

Berikut ini adalah sintaks sederhana untuk menghasilkan pemicu:

>> CREATE TRIGGER trigger_name [BEFORE|AFTER|INSTEAD OF] event-name ON table_name [ ----Trigger Logic ];

Berikut adalah penjelasan dari pertanyaan umum di atas.

  • Trigger_name: Nama pemicu
  • BEFORE, AFTER, INSTEAD OF: Ketentuan yang menentukan kapan pemicu akan aktif
  • Event_name: Judul kejadian yang mungkin memicu pemicu (Ini bisa berupa, baik dari INSERT atau UPDATE atau DELETE)
  • Table-name: Menentukan tabel di mana pemicu akan dibangun

Untuk memahami konsep pemicu secara singkat, luncurkan shell PostgreSQL dari aplikasi. Ubah server jika Anda ingin bekerja di server lain, atau tekan enter dari keyboard Anda. Tambahkan nama database yang ingin Anda kerjakan, jika tidak, biarkan apa adanya dan ketuk enter. Seperti yang Anda lihat, saat ini kami bekerja pada port 5432 sebagai default; Anda juga dapat mengubahnya. Setelah itu, berikan nama user selain Postgres jika Anda ingin bekerja dengan user lain, atau biarkan kosong dan tekan tombol enter. Sekarang shell perintah Anda siap digunakan.

TRIGGER Saat Perintah INSERT

Mari kita lihat contoh pemicu ketika perintah INSERT telah digunakan sebagai peristiwa pemicu. Untuk ini, kita harus membuat dua tabel baru, misalnya, “employ”, dan “audit”. Tabel "karyawan" akan berisi catatan pribadi karyawan dari perusahaan tertentu dan tabel "audit" akan berisi informasi tentang kapan karyawan bergabung dengan perusahaan. Query untuk membuat tabel diberikan di bawah ini.

>> CREATE TABLE employ( ID INTEGER NOT NULL PRIMARY KEY, Name VARCHAR(100) NOT NULL, Age VARCHAR(100) NOT NULL, Salary VARCHAR(100) NOT NULL );

>> CREATE TABLE audit( empid INTEGER NOT NULL, entry_date VARCHAR(100) NOT NULL );

Anda harus membuat prosedur yang secara otomatis akan dijalankan atau bekerja ketika pemicu akan dipanggil. Ini akan digunakan dalam perintah CREATE TRIGGER berikutnya. Dari perintah di bawah ini, Anda bisa mendapatkan ide bahwa kami telah membuat prosedur “auditlogfunc()”, yang akan mengembalikan pemicu sebagai variabel “$examp_table$”. Fungsi dimulai dengan klausa BEGIN, diikuti oleh pernyataan INSERT. Pernyataan INSERT ini memasukkan id otomatis dan tanggal waktu saat ini menggunakan fungsi bawaan ke dalam tabel "audit" dan mengembalikan hasil ini ke TRIGGER.

Saatnya membuat TRIGGER menggunakan perintah CREATE TRIGGER. Kami membuat pemicu bernama "emp_trig" pada tabel "employ". Klausa AFTER INSERT ON berarti pemicu ini
hanya akan berfungsi setelah eksekusi perintah insert. UNTUK SETIAP ROW berarti setelah eksekusi setiap perintah INSERT, pemicu ini akan memanggil dan menjalankan prosedur "auditlogfunc()" yang dibuat sebelumnya.

>> CREATE TRIGGER emp_trig AFTER INSERT ON employ FOR EACH ROW EXECUTE PROCEDURE auditlogfunc();

Saatnya memasukkan beberapa data ke dalam tabel “employ”. Jalankan perintah INSERT di bawah ini di shell.

>> INSERT INTO employ(ID, Name, Age, Salary) VALUES (‘1’, ‘Paul’, ‘34’, ‘60000’);

Lihatlah tabel "pekerjakan". Data telah berhasil ditambahkan dengan perintah INSERT.

Sekarang lihat sekilas tabel "audit". Anda dapat melihat, itu juga diperbarui karena memicu "emp_trig" dan auditlogfunc().

PEMICU Setelah Perintah UPDATE

Sekarang kita akan melihat contoh pemicu menggunakan perintah UPDATE sebagai peristiwa pemicu. Kita harus membuat prosedur baru lagi dengan nama "update" yang berbeda seperti yang disajikan pada gambar. Prosedur ini juga akan menyisipkan catatan di tabel 'audit' saat dipanggil.

Sekarang, buat pemicu baru bernama "update_emp" menggunakan perintah CREATE TRIGGER. Ini hanya akan berfungsi setelah eksekusi kueri UPDATE pada tabel menggunakan dan itu akan memanggil prosedur "pembaruan".

Perbarui tabel "employ" dengan mengatur ID-nya ke "2".

Ambil catatan tabel "kerjakan" untuk melihat perubahan seperti yang ditambahkan di bawah ini.

Seperti yang Anda lihat pada tabel “audit”, tabel tersebut telah direorganisasi karena tabel “pekerja” diperbarui.

TRIGGER Setelah DELETE Command

Buka pgAdmin 4 dari aplikasi untuk bekerja di GUI PostgreSQL. Di bawah skema "tes", Anda akan menemukan daftar tabel. Buat tabel baru "emp" dan tabel "audit" yang sama.

Kali ini kita akan menjalankan perintah trigger dengan perintah DELETE. Di bawah ini adalah tabel "emp" dengan beberapa catatan.

Berikut adalah tabel audit dengan dua pembaruan sebelumnya.

Buat prosedur bernama "Del()" untuk memicu penyisipan di tabel "audit" setelah menghapus catatan dari tabel "emp".

Buat pemicu “del_trig” menggunakan kueri CREATE TRIGGER. Pemicu ini akan menjalankan prosedur "Del" ketika beberapa klausa DELETE akan dilakukan pada tabel "emp".

Mari kita hapus catatan dari tabel "emp" di mana "id" karyawan adalah "5". Ini akan menghapus satu baris dari tabel "emp".

Ambil catatan tabel "emp" dan lihatlah. Anda dapat melihat bahwa baris telah dihapus di mana "id" adalah "5".

Sekarang ekstrak catatan tabel "audit" dan Anda akan melihat bahwa itu telah diperbarui karena operasi DELETE telah dilakukan pada tabel "emp".

Kesimpulan:

Kami telah melakukan hampir setiap contoh penting untuk memahami konsep TRIGGER saat melakukan operasi INSERT, UPDATE, dan DELETE.


Related Posts