Basis Data Praktikum 9 (Latihan dan Studi Kasus Tigger): Membuat fitur yang mencatat log perubahan harga barang pada sebuah database penjualan.

Buatlah tabel produk di bawah

1.

CREATE TABLE produk (

-> kd_produk VARCHAR(6) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,

-> nm_produk VARCHAR(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci,

-> harga INT(11),

-> PRIMARY KEY (kd_produk)

-> );


 

2.       Buatlah tabel log_harga

 

CREATE TABLE log_harga (                                                   

-> log_id INT(11) AUTO_INCREMENT NOT NULL,                                                

 -> kd_produk VARCHAR(8) CHARACTER SET latin1 COLLATE latin1_swedish_ci,                    

-> harga_lama INT(11),                                                                      

-> harga_baru INT(11),                                                                    

 -> waktu_perubahan DATETIME,                                                               

-> PRIMARY KEY (log_id)                                                                     

-> ); 




3.       Membuat Trigger

 

DELIMITER $$                                                          

CREATE TRIGGER before_produk_update                                       

BEFORE UPDATE ON produk                                                                 

 FOR EACH ROW                                                                           

 BEGIN                                                                                  

 INSERT INTO log_harga                                                                   

 set kd_produk = OLD.kd_produk,                                                         

 harga_baru = new.harga,                                                                  

 harga_lama = old.harga,                                                                 

 waktu_perubahan = NOW();                                                               

 END$$                                                                             

 DELIMITER;

 



 

Penjelasan Syntaks MySql

Baris 2 – membuat sebuah trigger baru dengan nama before_produk_update

Baris 3 – trigger ini menggunakan event BEFORE UPDATE

Baris 6 – Query SQL untuk melakukan insert data ke tabel log_harga


 

Uji Coba Trigger

1.       Masukkan beberapa record ke tabel produk, contoh

INSERT INTO produk VALUES ('ATK001','PENSIL',12000);

INSERT INTO produk VALUES ('ATK002','PENGHAPUS',8000);





2.       Update harga produk, contoh

update produk set harga=10000 WHERE kd_produk='ATK001'


3.       Membuktikan Trigger

Trigger akan berhasil jika di dalam tabel tujuan trigger, yang dalam contoh ini adalah tabel log_harga secara

otomatis akan terdapat record baru, cara cek?

select *  from log_harga;



TUGAS! tidak selesai? lanjut kerjakan di rumah, perbanyaklah latihan!

- Pada tabel log_harga tambahkan field:

o nm_produk_baru dengan tipe data varchar (100)

            ALTER TABLE log_harga ADD nm_produk_baru VARCHAR (100)

o nm_produk_lama dengan tipe data varchar (100)

            ALTER TABLE log_harga ADD nm_produk_lama VARCHAR (100)

 


 

- Uji cobakan triger yang dibuat dengan update:

 

DELIMITER $$                                                          

CREATE TRIGGER before_nm_produk_update                                       

BEFORE UPDATE ON produk                                                                 

 FOR EACH ROW                                                                           

 BEGIN                                                                                  

 INSERT INTO log_harga                                                                   

 set kd_produk = OLD.kd_produk,                                                         

 nm_produk_baru = new.nm_produk,                                                                  

 nm_produk_lama = old.nm_produk,                                                                 

 waktu_perubahan = NOW();                                                               

 END$$                                                                             

 DELIMITER;



o update produk set nm_produk = ‘PENGGARIS’ WHERE kd_produk='ATK001';


Untuk mengecek perubahan dari log dengan cara menggunakan select

select *  from log_harga;



Komentar