Cara membuat Trigger pada Mysql

Pengertian 

Dalam DBMS (Database Management System), trigger merupakan kumpulan script yang berhubungan dengan table, view ataupun skema yang dijalankan secara otomatis ketika terdapat event yang dijalankan. Event tersebut meliputi operasi yang biasa dilakukan dalam mengolah database, seperti :

  • DML (Data Manipulation Language) yang meliputi DELETE, INSERT atau UPDATE
  • DDL (Data Definition Language) yang meliputi CREATE, ALTER atau DROP
  • Operasi Database lainnya, seperti SERVERERROR, LOGON, LOGOFF, STARTUP atau SHUTDOWN)

Secara sederhana, perintah untuk membuat trigger adalah sebagai berikut :

CREATE TRIGGER nama_trigger [BEFORE|AFTER]
[INSERT/UPDATE/DELETE]
ON nama_table
FOR EACH ROW
BEGIN
// trigger body
END;


Fungsi Trigger 

Terdapat beberapa fungsi trigger yang akan dijelaskan dibawah ini :

1. Integritas Data

Dengan adanya trigger, Anda dapat mempertahankan integritas table yang terdapat dalam database. Sebab, Anda dapat melakukan operasi-operasi yang berkaitan dengan pengolahan database, seperti INSERT, UPDATE dan DELETE.

2. Mencegah Error

Trigger dalam MySQL dapat mencegah terjadinya error dalam pengoperasian data. Jika terjadi error dalam pendefinisian trigger, error tersebut tidak mengganggu trigger yang sedang berjalan.

3. Membuat Tugas Kerja menjadi Terjadwal

Ketika trigger telah dijalankan, maka Anda dapat menggunakan berbagai bahasa pemrograman tanpa harus bingung bagaimana cara mengaksesnya.

4. Mencegah Proses Transaksi yang Tidak Sah

Dalam praktiknya, biasa trigger digunakan untuk melakukan proses transaksi. Anda dapat menyimpan record transaksi tersebut ke table lain (history) tanpa harus takut jika data tersebut di-update atau delete. Semua perubahan yang terjadi juga dapat diacak berdasarkan waktu pembuatannya.


Berikut contohnya : 

1.) yang pertama, pastikan sudah mempunyai database nya 
2.) Setelah itu kita membuat tabel terlebih dahulu 
3.) Lalu ketikkan syntax seperti dibawah ini 

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
);



4. Lalu buat tabel before update trigger ,

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();





5. lalu liat trigger yangg sudah dibuat




6.) lalu update trigger dengan syntax seperti dibawah ini

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





7.) jika mau melihat hasilnya, Ketik Syntax dibawah :

SELECT * FROM employees_audit;



Komentar