andriajah Sat Apr 2021 1 year ago

Contoh Membuat Trigger di Mysql

Dalam tutorial ini, Anda akan belajar bagaimana menggunakan CREATE TRIGGER MySQL untuk membuat trigger dalam database .

CREATE TRIGGER menciptakan trigger baru. Berikut adalah sintaks dasar dari pernyataan  CREATE TRIGGER tersebut:

CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE| DELETE }
ON table_name FOR EACH ROW
trigger_body;

Dalam sintaks ini:

  • Pertama, tentukan nama trigger yang ingin Anda buat setelah CREATE TRIGGER kata kunci. Perhatikan bahwa nama trigger harus unik dalam database.
  • Selanjutnya, tentukan waktu tindakan trigger yang dapat berupa salah satu BEFORE atau AFTER yang menunjukkan bahwa trigger dipanggil sebelum atau setelah setiap baris diubah.
  • Kemudian, tentukan operasi yang mengaktifkan trigger , yang dapat INSERTUPDATE atau DELETE.
  • Setelah itu, tentukan nama tabel tempat trigger berada setelah ON kata kunci.
  • Terakhir, tentukan pernyataan yang akan dieksekusi saat trigger aktif. Jika Anda ingin menjalankan beberapa pernyataan, Anda menggunakan BEGIN END pernyataan gabungan.

Badan trigger dapat mengakses nilai kolom yang terpengaruh oleh pernyataan DML.

Untuk membedakan antara nilai kolom BEFORE dan AFTERDML telah diaktifkan, Anda menggunakan NEW dan OLD pengubah.

Misalnya, jika Anda memperbarui deskripsi kolom, di tubuh trigger, Anda dapat mengakses nilai deskripsi sebelum pembaruan OLD.descriptiondan nilai baru NEW.description.

Tabel berikut menggambarkan ketersediaan OLD dan NEW pengubah:

Acara Pemicu OLD NEW
INSERT Tidak Iya
UPDATE Iya Iya
DELETE Iya Tidak

Contoh Trigger MySQL

Mari mulai membuat trigger di MySQL untuk mencatat perubahan tabel employees.

Pertama, buat tabel baru dengan nama employees_audit untuk menyimpan perubahan pada tabel employees:

CREATE TABLE employees_audit (
    id INT AUTO_INCREMENT PRIMARY KEY,
    employeeNumber INT NOT NULL,
    lastname VARCHAR(50) NOT NULL,
    changedat DATETIME DEFAULT NULL,
    action VARCHAR(50) DEFAULT NULL
);

Selanjutnya, buat trigger BEFORE UPDATE yang dipanggil sebelum perubahan dilakukan pada tabel employees.

CREATE TRIGGER before_employee_update 
    BEFORE UPDATE ON employees
    FOR EACH ROW 
 INSERT INTO employees_audit
 SET action = 'update',
     employeeNumber = OLD.employeeNumber,
     lastname = OLD.lastname,
     changedat = NOW();

Di dalam body trigger, kami menggunakan kata kunci OLD untuk mengakses nilai kolom employeeNumber dan baris lastname yang terpengaruh oleh trigger.

Kemudian, menampilkan semua trigger dalam database saat ini dengan menggunakan query SHOW TRIGGERS:

SHOW TRIGGERS;

Selain itu, jika Anda melihat skema menggunakan MySQL Workbench di bawah employees>triggers, Anda akan melihat trigger before_employee_update seperti yang ditunjukkan pada gambar di bawah:

Setelah itu, perbarui baris dalam tabel employees:

UPDATE employees 
SET 
    lastName = 'Phan'
WHERE
    employeeNumber = 1056;

Terakhir, buat kueri tabel  employees_audit untuk memeriksa apakah trigger diaktifkan oleh pernyataan UPDATE :

SELECT * FROM employees_audit;

Berikut ini adalah hasil dari query:

Seperti yang Anda lihat dengan jelas dari keluaran, trigger secara otomatis dipanggil dan disisipkan baris baru ke dalam tabel employees_audit.

Dalam tutorial ini, Anda telah mempelajari cara menggunakan pernyataan   CREATE TRIGGER MySQL untuk membuat trigger baru di database.

mysql trigger create tigger mysql example mysql tutorial