Lap or Anlat Ihn Trigger

download Lap or Anlat Ihn Trigger

of 15

Transcript of Lap or Anlat Ihn Trigger

Laporan PraktikumKONSEP BASIS DATA TRIGGER-2 (Latihan)

Oleh:

Nama : Intan Mega PuspitaNIM: M3112077Kelas / Shift : TIB / 1

DIII Teknik InformatikaFakultas Matematika dan Ilmu Pengetahuan AlamUniversitas Sebelas Maret Surakarta2013

I. TujuanAdapun tujuan dari praktikum ini, yaitu:1. Mahasiswa mampu memahami trigger dalam basis data2. Mahasiswa mampu membuat trigger3. Mahasiswa mampu menggunakan perintah-perintah dalam trigger

II. Dasar TeoriTRIGGERTrigger dalam basis data diartikan sebagai sekumpulan perintah atau sintaks yang secara otomatis akan dijalankan jika terjadi operasi tertentu pada tabel atau view. Trigger dapat dipanggil ketika ada proses atau event:1. DDL (CREATE, ALTER, DROP, GRANT, REVOKE, dll)2. DML (INSERT, UPDATE, DELETE)3. Operasi Database (SERVERERROR, LOGON, LOGOFF, STARTUP, SHUTDOWN, dll)Sebagai contoh misalnya kita ingin menyimpan id pelanggan secara otomatis ke tabel log sebelum menghapus data di tabel pegawai.Trigger sering digunakan, antara lain untuk :1. Melakukan update data otomatis jika terjadi perubahan.Contoh : jika terjadi di inputkan barang baru maka secara otomatis stock akan bertambah.2. Mengimplementasikan suatu system log, sehingga setiap terjadi perubahan, secara otomatis akan menyimpan ke tabel log.3. Melakukan validasi dan verifikasi data sebelum data tersebut disimpan.Sintak membuat trigger:CREATE [DEFINER = { user | CURRENT_USER }] TRIGGER trigger_name trigger_time trigger_event ON tabel_name FOR EACH ROW trigger_statement*) teks bercetak miring tebal, bersifat opsional

Keterangan dari bentuk umum perintah membuat function : trigger_name, Nama trigger mengikuti peraturan penamaan variabel / identifier dalam Trigger_time : kapan trigger terjadi (BEFORE /AFTER) BEFORE: Membuat trigger diaktifkan sebelum dihubungkan dengan suatu operasi. AFTER: Membuat trigger diaktifkan setelah dihubungkan dengan suatu operasi Trigger_event : operasi yang menyebabkan trigger (INSERT/UPDATE/DELETE) digunakan untuk menentukan event (trigger_event) (proses)

III. Langkah Kerja

1. Mengaktifkan MySQL pada tools XAMPP

2. Masuk ke folder tempat menginstal xampp pada Command Prompt (cmd), pada praktikum ini : C:\xampp\mysql\bin>mysql u root p h 127.0.0.1

3. Praktikum dalam ModulDengan menggunakan basis data b1 1) Membuat tabel penjualan dengan struktur sama seperti tabel pembelian2) Membuat trigger pada tabel penjualan, dimana ketika terjadi transaksi penjualan barang , dilakukan penyimpanan data pada tabel backup dan seccara otomatis mengurangi jumlah stok barang. Terlebih dahulu kita buat tabel backup_penjualan yang berfungsi sebagai tabel backup

Kemudian membuat trigger untuk pada tabel penjualan , dengan perintah/syntax seperti gambar berikut :

Untuk melihat hasil dari trigger yang dibuat, sebelumnya kita tampilkan dahulu tabel barang untuk mengetahui kode barang awal :

Menginputkan data pada tabel baran dengan perintah sebagai berikut:

Setelah kita lakukan penginputan, kita dapat melihat hasilnya pada tabel penjualan, seperti berikut :

Dengan menampilkan tabel barang dapat terlihat bahwa stock barang TV LED dengan kode barang B0002 berkurang dari 12 menjadi 9.

Umtuk memastikan apakah data yang kita masukan pada tabel penjulan telah ter-backup apa belum, kita dapat menampilkan tabel backup_penjualan yang sebelumnya telah dibuat :

3) Membuat trigger pada tabel pembelian , dimana ketika terjadi transaksi pembelian barang, dilakukan penyimpanan data pembelian pada tabel backup dan secara otomatis menambah jumlah stok barang ! Terlebih dahulu kita buat tabel backup_pembelian yang berfungsi sebagai tabel backup

Kemudian membuat trigger untuk pada tabel pembelian , dengan perintah/syntax seperti gambar berikut :

Untuk melihat hasil dari trigger yang dibuat, sebelumnya kita tampilkan dahulu tabel barang untuk mengetahui kode barang awal :

Menginputkan data pada tabel barang, kemudian kita dapat melihat hasilnya pada tabel penjualan, seperti berikut :

Dengan menampilkan tabel barang dapat terlihat bahwa stock barang TV LED dengan kode barang B0002 bertambah dari 9 menjadi 14.

Umtuk memastikan apakah data yang kita masukan pada tabel penjulan telah ter-backup apa belum, kita dapat menampilkan tabel backup_penjualan yang sebelumnya telah dibuat :

IV. Analisa dan Pembahasan1. Mengaktifkan MySQL pada tools XAMPPDengan mengklik start pada apache dan MySql yang terdapat pada tools XAMPP2. Masuk ke folder tempat menginstal xampp lewat Command Prompt (cmd) dan mengaktifkan MySQL pada cmd, pada praktikum ini dapat dilakukan dengan perintah:cd..cd..cd xampp/mysql/binmysql u root p h 127.0.0.13. Praktikum Dalam ModulMenggukan database b1 dengan menggunakan perintah :use b1;1) Membuat tabel penjualan dengan struktur sama seperti tabel pembelian Penulisan scriptnya :create table penjualan (no_penjualan varchar(5),kode_barang varchar (5) references barang (kode_barang),kode_pegawai varchar(5) referencespegawai(kode_pegawai),jml_barang int, primary key no_pegawai);

Penjelasan dari script di atas adalah : create table penjualan digunakan untuk membuat tabel penjualan. No_penjualan sebagai primary kaey, kode_barang foreign key dari tabel barang, kode_pegawai foreign key dari tabel pegawai menggunakan tipe data varchar yang berarti tidak mengharuskan untuk memasukkan data yang telah ditentukan oleh kita dan ukuran maksimum memasukkan data yaitu 5 karakter . Jml_barang menggunakan tipe data int karena merupakan bilangan bulat.

2) Membuat trigger pada tabel penjualan, dimana ketika terjadi transaksi penjualan barang , dilakukan penyimpanan data pada tabel backup dan seccara otomatis mengurangi jumlah stok barang. Terlebih dahulu kita buat tabel backup_penjualan yang berfungsi sebagai tabel backupcreate table backup_penjualan (no_penjualan varchar(5),kode_barang varchar (5) references barang (kode_barang),kode_pegawai varchar(5) referencespegawai(kode_pegawai),jml_barang int, primary key no_pegawai);

Penjelasan dari script di atas adalah : create table penjualan digunakan untuk membuat tabel backup_penjualan sebagai tabel backup dari penjualan. No_penjualan sebagai primary kaey, kode_barang foreign key dari tabel barang, kode_pegawai foreign key dari tabel pegawai menggunakan tipe data varchar yang berarti tidak mengharuskan untuk memasukkan data yang telah ditentukan oleh kita dan ukuran maksimum memasukkan data yaitu 5 karakter . Jml_barang menggunakan tipe data int karena merupakan bilangan bulat.

Kemudian membuat trigger untuk pada tabel penjualan , dengan perintah/syntax berikut :Delimiter *Create trigger hidtory_penjulan after insert on penjualanFor each rowBeginInsert into backup_penjualan values (new.no_penjualan, new.kode_barang, new.kode_pegawai, new.jml_barang);Update barang set stock=stock-new.jml_barang whre kode_barang=new,kode_barang;End*Delimiter ;

Penjelasan dari script di atas : Delimiter *, berarti mengubah atau mengganti delimiter dengan delimiter *, hal ini dikarenakan terdapat beberapa statement dalam rountine yang diawali dengan begin dan diakhiri dengan end yangdipisahkan dengan tanda semicolon (;) create trigger history_penjulan after insert on penjualan, berarti membuat trigger dengan nama sebelum_tambah_pegawai yang dijalankan sebelum insert data dalam tabel penjualan. Sebelum begin-end terdapat beberapa perintah for each row, yang berarti berlaku untuk tiap baris Diantara begin-end terdapat perintah :Insert into backup_penjualan values (new.no_penjualan, new.kode_barang, new.kode_pegawai, new.jml_barang);Update barang set stock=stock-new.jml_barang where kode_barang=new,kode_barang;Memasukan data ke dalam tabel backup_penjualan dengan yang diambil dari pemasukan data pada tabel penjualan itu sendiri dengan mengakses record-record baru (new). Dengan pemasukan data pada tabel penjualan maka akan mengupdate (mengurangi stock) barang pada tabel barang.

Untuk melihat hasil dari trigger yang dibuat, sebelumnya kita tampilkan dahulu tabel barang untuk mengetahui kode barang awal :Select *from penjualanDari tampilan tabel tersebut dapat diketahui bahwa stok awal kulkas dengan kode barang B0001 adalah 8 dan TV LED dengan kode barang B0002 adalah 12 Menginputkan data pada tabel penjualan dengan perintah sebagai berikut: Insert into penjualan values (P0001,B0002,1302,3);Menginputkan data pada tabel penjualan dengan kode barang B0002 yaitu TV LED Setelah kita lakukan penginputan, kita dapat melihat hasilnya pada tabel penjualan, seperti berikut :Select *from penjualan;Dari tampilan script diatas dapat tertampil data baru yang diinputkan Dengan menampilkan tabel barang dapat terlihat bahwa stock barang TV LED dengan kode barang B0002 berkurang dari 12 menjadi 9.Select *from barang; Untuk memastikan apakah data yang kita masukan pada tabel penjulan telah ter-backup apa belum, kita dapat menampilkan tabel backup_penjualan yang sebelumnya telah dibuat :Select *from backup_penjualan;

3) Membuat trigger pada tabel pembelian , dimana ketika terjadi transaksi pembelian barang, dilakukan penyimpanan data pembelian pada tabel backup dan secara otomatis menambah jumlah stok barang ! Terlebih dahulu kita buat tabel backup_pembelian yang berfungsi sebagai tabel backupcreate table backup_pembelian (no_faktur varchar(5),kode_barang varchar(5), kode_pegawai varchar(5), jml_barang int);

Penjelasan dari script di atas adalah : create table penjualan digunakan untuk membuat tabel penjualan. No_faktur, kode_barang, kode_pegawai menggunakan tipe data varchar yang berarti tidak mengharuskan untuk memasukkan data yang telah ditentukan oleh kita dan ukuran maksimum memasukkan data yaitu 5 karakter . Jml_barang menggunakan tipe data int karena merupakan bilangan bulat Kemudian membuat trigger untuk pada tabel pembelian , dengan perintah/syntax seperti gambar berikut :Delimiter $Create trigger hidtory_pembelian after insert on pembelianFor each rowBeginInsert into backup_pembelian values (new.no_faktur, new.kode_barang, new.kode_pegawai, new.jml_barang);Update barang set stock=stock+new.jml_barang where kode_barang=new,kode_barang;End $Penjelasan dari script di atas : Delimiter $, berarti mengubah atau mengganti delimiter dengan delimiter $, hal ini dikarenakan terdapat beberapa statement dalam rountine yang diawali dengan begin dan diakhiri dengan end yangdipisahkan dengan tanda semicolon (;) create trigger history_pembelian after insert on pembelian, berarti membuat trigger dengan nama sebelum_tambah_pegawai yang dijalankan sebelum insert data dalam tabel pembelian. Sebelum begin-end terdapat beberapa perintah for each row, yang berarti berlaku untuk tiap baris Diantara begin-end terdapat perintah :Insert into backup_pembelian values (new.no_faktur, new.kode_barang, new.kode_pegawai, new.jml_barang);Update barang set stock=stock+new.jml_barang where kode_barang=new,kode_barang;Memasukan data ke dalam tabel backup_pembelian dengan yang diambil dari pemasukan data pada tabel pembelian itu sendiri dengan mengakses record-record baru (new). Dengan pemasukan data pada tabel pembelian maka akan mengupdate (menembah stock) barang pada tabel barang.

Untuk melihat hasil dari trigger yang dibuat, sebelumnya kita tampilkan dahulu tabel barang untuk mengetahui kode barang awal :Select *from penjualanDari tampilan tabel tersebut dapat diketahui bahwa stok kulkas dengan kode barang B0001 adalah 8 dan TV LED dengan kode barang B0002 adalah 9

Menginputkan data pada tabel penjualan, kemudian kita dapat melihat hasilnya pada tabel penjualan, seperti berikut :Insert into pembelian values (P0001,B0002,1302,5);Menginputkan data pada tabel penjualan dengan kode barang B0002 yaitu TV LEDSelect *from penjualan; Dengan menampilkan tabel barang dapat terlihat bahwa stock barang TV LED dengan kode barang B0002 bertambah dari 9 menjadi 14.Select *from barang; Untuk memastikan apakah data yang kita masukan pada tabel penjulan telah ter-backup apa belum, kita dapat menampilkan tabel backup_penjualan yang sebelumnya telah dibuat :Select *from backup_penjualan;

V. KesimpulanDari praktikum di atas dapat disimpulkan bahwa :1. Trigger merupakan sekumpulan perintah atau sintaks yang akan secara otomatis dijalankan jika terjadi operasi tertentu dalam tabel atau view.2. Trigger dapat dipanggil ketika ada proses atau event: DDL (CREATE, ALTER, DROP, GRANT, REVOKE, dll) DML (INSERT, UPDATE, DELETE) Operasi Database (SERVERERROR, LOGON, LOGOFF, STARTUP, SHUTDOWN, dll)3. Bentuk umum penulisa syntax trigger :CREATE TRIGGER name[BEFORE|AFTER] [INSERT|UPDATE|DELETE]ON tablenameFOR EACH ROW statement4. Dalam statement trigger, kita dapat mengakses record tabel sebelum atau sesudah proses dengan menggunakan NEW dan OLD.