Praktikum Basis Data 8
( TRIGGER )
Trigger digunakan untuk memanggil satu atau beberapa perintah SQL secara otomatis sebelum atau sesudah terjadi proses INSERT, UPDATE atau DELETE dari suatu tabel.
Trigger sering digunakan, antara lain untuk:
• Melakukan update data otomatis jika terjadi perubahan. Contohnya adalah dalam sistem penjualan, jika dientri barang baru maka stock akan bertambah secara otomatis.
• Trigger dapat digunakan untuk mengimplementasikan suatu sistem log. Setiap terjadi perubahan, secara otomatis akan menyimpan ke tabel log.
• Trigger dapat digunakan untuk melakukan validasi dan verifikasi data sebelum data tersebut disimpan.
Membuat Trigger Baru
Berikut ini bentuk umum perintah untuk membuat triggers:
CREATE TRIGGER name
[BEFORE|AFTER]
[INSERT|UPDATE|DELETE]
ON tablename
FOR EACH ROW statement dimana
BEFORE | AFTER digunakan untuk menentukan kapan proses secara otomatis akan dieksekusi, sebelum atau sesudah proses.
Latihan dan Studi Kasus
a. Membuat fitur yang mencatat log perubahan harga barang pada sebuah database penjualan.
Untuk mengaksesnya dengan mengetikkan "mysql -u root" lalu tekan Enter.
Selanjutnya
1. "CREATE DATABASE Penjualan;"
2. "USE Penjualan;"
3. "SHOW DATABASES"
b. Buatlah tabel produk di bawah :
Syntax yang digunakan :
CREATE TABLE Produk ( Kd_Produk varchar (6) collate latin1_general_ci NOT NULL, NM_Produk varchar (100) collate latin1_general_ci, Harga int (11), PRIMARY KEY (Kd_Produk) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
c. Buatlah tabel log harga :
Syntax yang di gunakan :
CREATE TABLE Log_Harga ( Log_Id int (11) collate latin1_general_ci NOT NULL AUTO_INCREMENT, Kd_Produk varchar (8) collate latin1_general_ci, Harga_Lama int (11), Harga_Baru int (11), Waktu_Perubahan datetime, PRIMARY KEY (Log_Id), KEY FK_Produk (Kd_Produk), CONSTRAINT FK_Produk FOREIGN KEY (Kd_Produk) REFERENCES Produk (Kd_Produk) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
d. Membuat Trigger
e. Masukkan beberapa record ke tabel produk, contoh :
f. Update harga produk, contoh :
INSERT INTO produk VALUES ('ATK001','PENSIL',12000);
INSERT INTO produk VALUES ('ATK002','PENGHAPUS',8000);
update produk set harga=10000 WHERE kd_produk='ATK001'
g. Membuktikan Trigger :
select * from log_harga;
TUGAS PRAKTIKUM PERTEMUAN 8
Pada tabel log_harga tambahkan field :
nm_produk_baru dengan tipe data varchar (100)
nm_produk_lama dengan tipe data varchar (100)
a. Membuat Table log_harga ( tabel yang sebelumnya sudah saya hapus )
dengan tambahan field :
nm_produk_baru dengan tipe data varchar (100)
nm_produk_lama dengan tipe data varchar (100)
Syntax yang di gunakan :
CREATE TABLE Log_Harga ( Log_Id int (11) collate latin1_general_ci NOT NULL AUTO_INCREMENT, Kd_Produk varchar (8) collate latin1_general_ci, NM_Produk_Lama varchar (100) collate latin1_general_ci , NM_Produk_Baru varchar (100) collate latin1_general_ci , Harga_Lama int (11), Harga_Baru int (11), Waktu_Perubahan datetime, PRIMARY KEY (Log_Id), KEY FK_Produk (Kd_Produk), CONSTRAINT FK_Produk FOREIGN KEY (Kd_Produk) REFERENCES Produk (Kd_Produk) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
d. Membuat Trigger lagi ( tabel yang sebelumnya sudah saya hapus ) dengan tambahan :
nm_ produk baru
nm_produk lama
c. Uji cobakan triger yang dibuat dengan update :
update produk set nm_produk=PENGGARIS WHERE kd_produk='ATK001';
d) 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
select * from log_harga;
Sekian Terimakasih:)














Komentar
Posting Komentar