Rabu, 18 Desember 2013

Cara membuat dan mengoperasikan Triger



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. 
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.
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
1.       buka database “kredit” :
2.       C :
3.       D :\
4.       E :
5.       F :
 

1 komentar: