Trigger SQL Sederhana

Trigger (pemicu) merupakan stored procedure (prosedur tersimpan) yang secara otomatis dieksekusi ketika terjadi even modifikasi pada database server, yang dilakukan oleh user.

Even modifikasi tersebut dikenal dengan DML (Data Manipulation Language), yang biasa digunakan untuk trigger diantaranya:

  • BEFORE INSERT -- dijalankan ketika data di masukan ke dalam table.
  • AFTER INSERT -- dijalankan setelah data masuk ke dalam table.
  • BEFORE UPDATE -- dijalankan sebelum proses update data.
  • AFTER UPDATE -- dijalankan setelah proses proses update data.
  • BEFORE DELETE -- dijalankan sebelum proses delete data.
  • AFTER DELETE -- dijalankan setelah proses delete data.

1. Membuat Tabel Yang Akan Digunakan

Kita akan membuat fitur yang mencatat log perubahan harga barang pada sebuah database penjualan, dimana terdapat tabel produk sebagai tabel untuk menyimpan informasi produk yang memiliki field kode_produk, nama_produk dan harga.

kemudian kita akan membuat sebuah tabel log_harga_produk untuk menyimpan informasi perubahan harga produk, informasi yang akan kita simpan adalah kode_produk, harga_lama, harga_baru dan watu_perubahan.

2. Membuat Trigger MySQL

selanjutnya kita akan membuat sebuah trigger untuk mencatat perubahan harga produk ketika sebuah record produk di update, sintaks untuk membuat trigger dengan kondisi di atas  adalah sebagai berikut:

DELIMITER $$
CREATE TRIGGER before_produk_update 
    BEFORE UPDATE ON produk
    FOR EACH ROW 
BEGIN
    INSERT INTO log_harga_produk
    set kode_produk = OLD.kode_produk,
    harga_baru=new.harga,
    harga_lama=old.harga,
    waktu_perubahan = NOW(); 
END$$
DELIMITER;

Penjelesan Script:

  • line 2 -- Kita membuat sebuah trigger baru dengan nama before_produk_update
  • line 3 -- Pada Trigger ini kita menggunakan event BEFORE UPDATE
  • line 6 -- Query SQL untuk melakukan insert data ke tabel log_harga_produk

3. Testing Trigger

Setelah semua nya selesai kita akan melakukan uji coba terhadap trigger yang kita buat, kita akan melakukan insert beberapa data yang akan kita gunakan untuk ujicoba:

INSERT INTO `produk` VALUES ('BR001','SEMINGGU JAGO CODEIGNITER',120000);
INSERT INTO `produk` VALUES ('BR002','SEMINGGU JAGO PHP MYSQL',80000);

berikutnya kita coba tampilkan hasil data yang sudah kita input.

]

langkah selanjutnya adalah kita akan melakukan update data produk:

update produk set harga=90000 WHERE kode_produk='BR001'

Seperti yang Anda lihat bahkan setelah kita melakukan proses update data lalu muncul sebuah record baru pada tabel log_harga_produk tentang informasi perubahan data produk yang sudah di update.

4. Cara Menampilkan List Trigger

Untuk menampilkan list trigger pada sebuah database bisa menggunakan perintah berikut:

SHOW TRIGGERS

5. Cara Menghapus Trigger

Mungkin susatu ketika anda ingin menghapus triger yang sudah anda buat, cara nya adalah seperti berikut:

DROP TRIGGER nama_trigger;
//contoh implementasinya
DROP TRIGGER before_produk_update;

6. Penutup Dan Kesimpulan

Kesimpulannya adalah triger ini kita manfaatkan untuk mengeksekusi sebuah perintah sql berdasarkan event/ kondisi tertentu, walaupun anda bisa membuatnya secara manual menggunakan bahasa pemograman tertentu tapi dengan adanya Trigger tentu sangat membantu developer. sekian postingan tutorial membuat trigger pada database MySQL, anda  bisa mencoba menggunakan event lain untuk memperdalam pemahaman tentang Trigger pada MySQL, semoga bermanfaat.

Latihan

Sebuah catatan singkat di kelas praktikum dbms semester 3. Seorang dosen mengajarkan kepada kami tentang fitur yang sangat jarang sekali digunakan dalam dbms, mungkin iya untuk sistem yang sederana, tapi sistem sederana akan menjadi cerdas jika mampu mengimplementasikan "TRIGGER".

Oke, penetrasi pertama kita diberikan kasus untuk membuat database tentang input data, ya gak jauh-jauh cuman seputar mahasiswa, dan ini juga sekaligus sebagai stimulan doang bagi kita mahasiswa yang masih baru dalam pertemuan semester 3.

Oke, kira-kira seperti ini instruksi sederhananya.

CREATE TABLE mahasiswa(
nim VARCHAR (10) NOT NULL PRIMARY KEY,
nama VARCHAR (50) NOT NULL,
alamat VARCHAR (100) not null,
jnskel ENUM ("lAKI-LAKI", "Perempuan"),
prodi VARCHAR (20)NOT NULL,
notelp VARCHAR(15)NOT NULL
);

CREATE TABLE matakuliah(
idmatakuliah INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
nama VARCHAR(50) NOT NULL,
sks TINYINT(1) NOT NULL,
semester ENUM('Gasal','Genap')
);

CREATE TABLE dosen(
iddosen INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
nama VARCHAR(50)NOT NULL,
alamat VARCHAR(100)NOT NULL,
notelp VARCHAR(15)NOT NULL
);

CREATE TABLE kuliah(
idkuliah INT(11)NOT NULL PRIMARY KEY AUTO_INCREMENT,
iddosen INT(11)NOT NULL,
idmatakuliah INT(11)NOT NULL,
nim VARCHAR(10)NOT NULL,
nilai ENUM("A", "B", "C", "D", "E"),
thajaran VARCHAR(5)NOT NULL
);

Sementara itu, contoh kode sederhana untuk triggernya kira-kira seperti ini.

DROP TRIGGER IF EXISTS 'input_mahasiswa';
DELIMITER $$
CREATE TRIGGER input_mahasiswa AFTER INSERT ON mahsiswa
FOR EACH ROW
BEGIN
    INSERT INTO kuliah(nim, thajaran)
    VALUES (NEW.nim, '20141');
END $$

Mengujinya

  1. Inputkan melalui form input mahasiswa localhost/akademik/main/input
  2. Setelah diinput, pastikan tabel mahasiswa dan tabel kuliah bertambah recordnya, 😉
  3. Perintah Untuk menghapus trigger
  4. DROP TRIGGER input_mahasiswa;

Catatan lain

%CAri%

%=mewakili karakter/kata sebelum jika diletakan sebelum, setelah jika diletakan setelahnya

Kita juga diminta untuk membuat tampilan sederhana user interface untuk kasus berikut.

  1. tampil data
  2. input data
  3. edit data
  4. hapus data
  5. cari data

Masih seputar CodeIgniter, mekanisme kontrol sebagian besar ditentukan oleh uri segment.

  • segmen dimulai dari base url --> localhost/akademik/segmenstart...
  • contoh $nim = $this->uri->segment(3);

Sumber

https://belajarphp.net/tutorial-trigger-mysql/


Post a Comment

Previous Next

نموذج الاتصال