Sintaks:
Berikut adalah sintaks mudah untuk menghasilkan pencetus:
>> BUAT TRIGGER trigger_name [SEBELUM | SELEPAS | SELEPAS] nama-acara ON table_name [---- Trigger Logic];Berikut adalah penjelasan mengenai pertanyaan umum di atas.
- Pencetus_nama: Nama pencetus
- SEBELUM, SELEPAS, BERDASARKAN: Syarat yang menentukan kapan pencetus akan aktif
- Nama acara: Judul kejadian yang mungkin memicu pemicu (Ini mungkin, sama ada dari INSERT atau UPDATE atau DELETE)
- Nama jadual: Menentukan jadual di mana pencetus akan dibina
Untuk memahami konsep pencetus secara ringkas, lancarkan shell PostgreSQL dari aplikasi. Tukar pelayan jika anda ingin menggunakan pelayan lain, atau tekan enter dari papan kekunci anda. Tambahkan nama pangkalan data yang ingin anda kerjakan, jika tidak, biarkan seperti sedia ada dan ketik enter. Seperti yang anda lihat, kami kini bekerja di port 5432 sebagai lalai; anda juga boleh mengubahnya. Selepas itu, berikan nama pengguna selain Postgres jika anda ingin bekerjasama dengan pengguna lain, atau biarkan kosong dan tekan butang enter. Sekarang shell arahan anda sudah siap digunakan.
TRIGGER Setelah INSERT Perintah
Mari kita lihat contoh pencetus apabila arahan INSERT telah digunakan sebagai peristiwa pencetus. Untuk ini, kita harus membuat dua jadual baru, e.g., "Menggunakan", dan "audit". Jadual "mempekerjakan" akan berisi catatan peribadi pekerja dari syarikat tertentu dan tabel "audit" akan berisi informasi tentang ketika karyawan bergabung dengan perusahaan. Pertanyaan untuk membuat jadual diberikan di bawah.
>> BUAT TABLE menggunakan (ID INTEGER BUKAN NULL PRIMARY KEY, Name VARCHAR (100) NOT NULL, Age VARCHAR (100) NOT NULL, Gaji VARCHAR (100) NOT NULL);>> BUAT audit JADUAL (empid INTEGER NOT NULL, entry_date VARCHAR (100) NOT NULL);
Anda harus membuat prosedur yang akan dijalankan secara automatik atau berfungsi ketika pemicu akan dipanggil. Ia akan digunakan dalam perintah CREATE TRIGGER seterusnya. Dari perintah di bawah ini, anda dapat memperoleh idea bahawa kami telah membuat prosedur "auditlogfunc ()", yang akan mengembalikan pemicu sebagai pemboleh ubah "$ examp_table $". Fungsi dimulakan dengan klausa BEGIN, diikuti oleh pernyataan INSERT. Pernyataan INSERT ini memasukkan id automatik dan tarikh waktu semasa menggunakan fungsi bawaan ke dalam jadual "audit" dan mengembalikan hasil ini ke TRIGGER.
Sudah tiba masanya untuk menghasilkan TRIGGER menggunakan perintah CREATE TRIGGER. Kami membuat pencetus bernama "emp_trig" di atas meja "menggunakan". Klausa SETELAH INSERT ON bermaksud bahawa pencetus ini hanya akan berfungsi setelah pelaksanaan perintah sisipan. UNTUK SETIAP ROW bermaksud setelah pelaksanaan setiap perintah INSERT, pencetus ini akan memanggil dan melaksanakan prosedur “auditlogfunc ()” yang dibuat sebelum.
>> BUAT TRIGGER emp_trig SETELAH MASUKKAN UNTUK MENGGUNAKAN SETIAP PROSEDUR REC EXECUTE auditlogfunc ();
Sudah waktunya untuk memasukkan beberapa data ke dalam jadual "menggunakan". Jalankan arahan INSERT di bawah di shell.
>> INSERT INTO menggunakan (ID, Nama, Umur, Gaji) NILAI ('1', 'Paul', '34', '60000');
Lihat jadual "menggunakan". Data telah berjaya ditambahkan dengan arahan INSERT.
Sekarang lihat sekilas jadual "audit". Anda dapat lihat, ini juga diperbarui kerana pencetus "emp_trig" dan auditlogfunc ().
TRIGGER Setelah Perintah UPDATE
Kita sekarang akan melihat contoh pemicu menggunakan arahan UPDATE sebagai peristiwa pencetus. Kita harus membuat prosedur baru lagi dengan nama "kemas kini" yang berbeda seperti yang ditunjukkan dalam gambar. Prosedur ini juga akan memasukkan rekod dalam jadual 'audit' semasa panggilan.
Sekarang, buat pemicu baru bernama "update_emp" menggunakan perintah CREATE TRIGGER. Ini hanya akan berfungsi setelah pelaksanaan permintaan UPDATE di atas meja digunakan dan ia akan memanggil prosedur "kemas kini".
Kemas kini jadual "menggunakan" dengan menetapkan IDnya ke "2".
Ambil rekod jadual "menggunakan" untuk melihat perubahan seperti yang dilampirkan di bawah.
Seperti yang dapat Anda lihat di tabel "audit", ini telah disusun ulang ketika tabel "mempekerjakan" diperbarui.
TRIGGER Setelah HAPUS Perintah
Buka pgAdmin 4 dari aplikasi untuk mengerjakan GUI PostgreSQL. Di bawah skema "ujian", anda akan menemui senarai jadual. Buat jadual "emp" baru dan jadual "audit" yang sama.
Kali ini kita akan memanggil perintah trigger dengan perintah DELETE. Berikut adalah jadual "emp" dengan beberapa catatan.
Berikut adalah jadual audit dengan dua kemas kini sebelumnya.
Buat prosedur bernama "Del ()" untuk memicu penyisipan dalam tabel "audit" setelah menghapus catatan dari tabel "emp".
Buat pencetus "del_trig" menggunakan pertanyaan CREATE TRIGGER. Pencetus ini akan menjalankan prosedur "Del" ketika beberapa klausa DELETE akan dilakukan pada tabel "emp".
Mari hapus rekod dari jadual "emp" di mana "id" pekerja adalah "5". Ia akan menghapus satu baris dari jadual "emp".
Ambil rekod jadual "emp" dan lihatlah. Anda dapat melihat bahawa baris telah dihapus di mana "id" adalah "5".
Sekarang ekstrak catatan jadual "audit" dan anda akan melihat bahawa ia telah diperbarui kerana operasi DELETE telah dilakukan pada tabel "emp".
Kesimpulan:
Kami telah melakukan hampir setiap contoh penting untuk memahami konsep TRIGGER semasa melakukan operasi INSERT, UPDATE, dan DELETE.