I.
Tujuan
pembelajaran:
a.
Siswa mampu menggunkan perintah SQL untuk membuat dan mengoperasikan Triger.
II.
Dasar
Teori
a.
Penggunaan perintah SQL
untuk membuat dan mengoperasikan Triger.
Trigger digunakan untuk
memanggil satu atau beberapa perintah SQL secara otomatis sebelum atau sesudah
terjadi proses INSERT, UPDATE atau DELETE dari suatu tabel. Sebagai contoh
misalnya kita ingin menyimpan id pelanggan secara otomatis ke tabel ‘log’ sebelum
menghapus data di tabel pelanggan.
Triggers mulai dikenal
di versi MySQL 5.0, dan di versi saat ini (5.0.4) fungsionalitasnya sudah bertambah.
Pada versi selanjutnya (5.1) pihak pengembang MySQL berjanji akan lebih
menguatkan (menambah) fitur trigger ini. Trigger sering digunakan, antara lain
untuk:
a)
Melakukan update data otomatis jika
terjadi perubahan. Contohnya adalah dalam sistem penjualan, jika dientri barang
baru maka stock akan bertambah secara otomatis.
b)
Trigger dapat digunakan untuk mengimplementasikan
suatu sistem log. Setiap terjadi perubahan, secara otomatis akan menyimpan ke
tabel log.
c)
Trigger dapat digunakan untuk melakukan
validasi dan verifikasi data sebelum data tersebut disimpan.
Membuat
Trigger Baru
Berikut
ini bentuk umum perintah untuk membuat triggers:
atau
CREATE TRIGGER name
[BEFORE|AFTER]
[INSERT|UPDATE|DELETE]
ON tablename
FOR EACH ROW statement
|
Keterangan
:
trigger_name :
nama trigger
trigger_time : kapan kita mengeksekusi trigger, apakah sebelum atau sesudah perubahan pada row data table. Jadi pilihannya adalah AFTER atau BEFORE.
trigger_event : merupakan event atau peristiwa yang menyebabkan trigger dilakukan. Pilihan event tersebut adalah INSERT, UPDATE, DELETE.
trigger_time : kapan kita mengeksekusi trigger, apakah sebelum atau sesudah perubahan pada row data table. Jadi pilihannya adalah AFTER atau BEFORE.
trigger_event : merupakan event atau peristiwa yang menyebabkan trigger dilakukan. Pilihan event tersebut adalah INSERT, UPDATE, DELETE.
tbl_name :
nama table.
trigger_body : statement-statement perintah SQL yang akan dilakukan. Jika perintahnya lebih dari satu maka gunakan dalam blok statement BEGIN ... END.
trigger_body : statement-statement perintah SQL yang akan dilakukan. Jika perintahnya lebih dari satu maka gunakan dalam blok statement BEGIN ... END.
Jika
DEFINER dispesifikasikan maka kita memutuskan trigger tersebut dijalankan hanya
oleh user tertentu (dalam format penulisan user@host). Jika tidak
dispesifikasikan, maka user yang melakukan perubahan (CURRENT_USER) adalah
pilihan default.
Karena
trigger digunakan pada saat terjadi perubahan row data, maka kita perlu
referensi ke row sebelum dan sesudah perubahan. Untuk ini ada dua alias yang
berfungsi untuk hal tersebut yaitu OLD dan NEW. Sesuai namanya, OLD digunakan
untuk referensi sebelum perubahan dan NEW untuk referensi sesudah perubahan
BEFORE
| AFTER digunakan untuk menentukan kapan proses secara
otomatis akan dieksekusi, sebelum atau sesudah proses.
INSERT
| UPDATE | DELETE digunakan untuk menentukan event yang dijadikan
trigger untuk menjalankan perintah-perintah di dalam triggers. Statement atau
perintah dalam trigger dapat berupa satu perintah saja, dan dapat juga beberapa
perintah sekaligus. Jika terdapat beberapa perintah dalam trigger, maka gunakan
perintah BEGIN dan END untuk mengawali dan mengakhiri perintah. Di
dalam statement trigger, kita dapat mengakses record tabel sebelum atau sesudah
proses dengan menggunakan NEW dan OLD. NEW digunakan untuk
mengambil record yang akan diproses (insert atau update), sedangkan OLD digunakan
untuk mengakses record yang sudah diproses (update atau delete). Berikut ini
contoh trigger yang akan mencatat aktivitas ke tabel log setiap terjadi
proses insert ke tabel pelanggan:
Trigger After Delete
Berikut
adalah contoh penggunaan trigger untuk event setelah penghapusan (AFTER DELETE)
pada table "tr_penjualan" Kita akan membuat satu table audit dengan
nama "tr_penjualan_hapus" yang berisi row-row yang dihapus dari table
"tr_penjualan" dengan tambahan dua field, yaitu tanggal penghapusan
(tgl_perubahan) dan user MySQL yang melakukan hal tersebut (nama_user).Berikut
adalah perintahnya :
berikutnya
adalah membuat trigger yang akan melakukan populasi data yang dihapus dari
"tr_penjualan" ke table "tr_penjualan_hapus". Berikut
adalah perintahnya :
Setelah
trigger di atas kita buat, sekarang saatnya kita melakukan pengujian. Coba
hapus tiga row data dari table "tr_penjualan" dan lihat efeknya di
table "tr_penjualan_hapus". Jalankan perintah berikut :
Menghapus
Trigger
Untuk menghapus
trigger, dapat menggunakan perintah DROP TRIGGER dengan diikuti dengan
nama tabel dan nama triggernya. Berikut ini bentuk umum dan contoh
perintah untuk menghapus trigger.
DROP
TRIGGER tablename.triggername;
|
Contoh
:
Catatan
: Untuk Laporan Teori dapat Dikembangkan
III. Alat
dan Bahan
a.
PC atau
Laptop.
b.
Perangkat
lunak SQL.
IV.
Petunjuk Pengerjaan
a.
Lakukanlah sesuai dengan langkah kerja
b.
Amatilah perubahan atau hasilnya pada
setiap perintah yang dilakukan.
c.
Buatlah laporan praktikum.
V.
Keselamatan
Kerja
a.
Berdo’alah sebelum memulai kegiatan belajar.
b.
Atur jarak pandang mata dengan layar monitor
kurang lebih 45 cm.
c.
Bacalah dan pahami petunjuk praktikum pada
setiap lembar kegiatan belajar.
d.
Gunakanlah PC atau Laptop sesuai dengan fungsinya.
e.
Setelah
selesai, matikan PC atau Laptop dengan benar.
VI.
Langkah Kerja
a. Persiapkan semua peralatan dan bahan.
b. Masih
ingatkah kalian dengan database kredit pada jobsheet 7???, gunakan database
tersebut untuk membuat trigger berikut ini.
c. Membuat
trigger dengan nama “autoUser”, yang digunakan untuk menambahkan data ‘user’ dan
‘password’ secara otomatis ketika pada data pelanggan ditambahkan. Berikut
sintaxnya :
CREATE TRIGGER autoUser AFTER INSERT ON pelanggan
FOR EACH ROW BEGIN
INSERT INTO user
VALUES(new.nama,new.noKTP,'user');
END
//
|
d. Membuat
trigger dengan nama “uStock1”, yang digunakan untuk mengurangi stock ketika
pembelian secara kredit karena kita menambahkan data pada tabel ‘belikredit’
CREATE TRIGGER uStock1
AFTER INSERT ON belikredit
FOR EACH ROW
BEGIN
UPDATE motor SET stock = stock-1 where kodeMotor =
new.kodeMotor;
end;
//
|
e. Membuat
trigger dengan nama “uStock2”, yang digunakan untuk mengurangi stock ketika
pembelian secara cash karena kita menambahkan data pada tabel ‘belicash’.
CREATE TRIGGER uStock2
AFTER INSERT ON belicash
FOR EACH ROW
BEGIN
UPDATE motor SET stock = stock-1 where kodeMotor =
new.kodeMotor;
end;
//
|
f. Membuat
trigger dengan nama “angsuranKe”, yang digunakan untuk memperbaharui field
‘angsuranKe’ pada tabel beli kredit setiap kali ada transaksi di tabel
“bayarcicilan”. Instruksi IF bermaksud untuk menambahkan keterangan ‘LUNAS’
setiap field ‘angsuranKe’ bernilai nol (0). Syntaxnya adalah sebagai berikut :
CREATE TRIGGER angsuranKe AFTER INSERT ON
bayarcicilan
FOR EACH ROW
BEGIN
UPDATE belikredit SET sisa = new.sisa, angsuranKe
= angsuranKe + 1 WHERE kodeKredit = new.kodeKredit;
IF sisa < 1 THEN UPDATE belikredit SET
keterangan = 'LUNAS';
END IF;
END;
//
|
VII.
Hasil
dan Kesimpulan Praktikum
LAPORAN
2.
C :
3.
D :\
4.
E :
5.
F :
link menuju jobshet 7 nya g ada mba?, pgn liat he
BalasHapus