0% menganggap dokumen ini bermanfaat (0 suara)
63 tayangan4 halaman

Triger

Trigger digunakan untuk memanggil perintah SQL secara otomatis sebelum atau sesudah proses INSERT, UPDATE atau DELETE pada suatu tabel. Dokumen ini menjelaskan cara membuat trigger untuk mencatat aktivitas ke tabel log setiap terjadi proses insert atau delete pada tabel penjualan, serta cara menghapus trigger. Contoh soal evaluasi membuat trigger untuk tabel Marketing dan Penjualan terkait operasi insert dan update.

Diunggah oleh

Naya Tabuta
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
63 tayangan4 halaman

Triger

Trigger digunakan untuk memanggil perintah SQL secara otomatis sebelum atau sesudah proses INSERT, UPDATE atau DELETE pada suatu tabel. Dokumen ini menjelaskan cara membuat trigger untuk mencatat aktivitas ke tabel log setiap terjadi proses insert atau delete pada tabel penjualan, serta cara menghapus trigger. Contoh soal evaluasi membuat trigger untuk tabel Marketing dan Penjualan terkait operasi insert dan update.

Diunggah oleh

Naya Tabuta
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 4

PERTEMUAN 12

Triger

I. Tujuan
1. Mahasiswa mengetahui dan memahami fungsi Trigger dalam MySQL
2. Mahasiswa dapat membuat Trigger dan menghapus Trigger

II. Dasar Teori


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 penjualan.

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:
CREATE TRIGGER name
[BEFORE|AFTER] [INSERT|UPDATE|DELETE]
ON tablename
FOR EACH ROW statement

Keterangan :
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 penjualan :
1. Kita Kita akan membuat satu audit dengan nama “penjualan_hapus” yang
berisi row – row yang dihapus dari tabel “penjualan” dengan tambahan dua
field, yaitu tanggal penghapusan (tgl_perubahan) dan user MySQL yang
melakukan hal tersebut (nama_user). Berikut adalah perintah nya :

mysql> Create table Penjualan_Hapus like Penjualan


Database changed
Query OK, 0 rows affected (0.17 sec)

mysql> select *from Penjualan_Hapus;


Empty set (0.00 sec)

mysql> desc Penjualan_Hapus;


+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| NoJual | char(4) | NO | PRI | NULL | |
| NoID | char(4) | YES | | NULL | |
| TglJual | date | YES | | NULL | |
| Quantity | smallint(3) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+

109
mysql> Alter table Penjualan_Hapus add (
-> tgl_perubahan datetime,
-> nama_user varchar(200)
-> );
Query OK, 0 rows affected (0.24 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc penjualan_hapus;


+---------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+-------+
| NoJual | char(4) | NO | PRI | NULL | |
| NoID | char(4) | YES | | NULL | |
| TglJual | date | YES | | NULL | |
| Quantity | smallint(3) | YES | | NULL | |
| tgl_perubahan | datetime | YES | | NULL | |
| nama_user | varchar(200) | YES | | NULL | |
+---------------+--------------+------+-----+---------+-------+
6 rows in set (0.04 sec)

2. Tahap berikutnya adalah membuat trigger yang akan melakukan populasi


data yang dihapus dari tabel “Penjualan” ke tabel “penjualan_hapus”. Berikut
adalah perintahnya :

mysql> DELIMITER |
mysql> CREATE TRIGGER hapus_penjualan AFTER DELETE
-> ON Penjualan FOR EACH ROW
-> BEGIN
-> INSERT INTO Penjualan_Hapus
-> (NoJual, NoID,TglJual,Quantity,tgl_perubahan,nama_user
-> )
-> Values
-> ( OLD.NoJual, OLD.NoID, OLD.TglJual, OLD.Quantity, SYSDATE(),
-> Current_User
-> );
-> END
-> |
mysql> DELIMITER ;

3. Setelah trigger diatas kita buat, sekarang saatnya kita melakukan pengujian.
Coba hapus 2 row data dari tabel “penjualan”.

mysql> Select * From Penjualan;


+--------+------+------------+----------+
| NoJual | NoID | TglJual | Quantity |
+--------+------+------------+----------+
| J001 | M001 | 2013-05-25 | 20 |
| J002 | M002 | 2013-05-25 | 50 |
| J003 | M003 | 2013-05-26 | 50 |
| J004 | M005 | 2013-05-26 | 80 |
| J005 | M007 | 2013-05-26 | 40 |
+--------+------+------------+----------+

110
5 rows in set (0.00 sec)

mysql> Delete from penjualan limit 2;


Query OK, 2 rows affected (0.13 sec)
mysql> select *from Penjualan;
+--------+------+------------+----------+
| NoJual | NoID | TglJual | Quantity |
+--------+------+------------+----------+
| J003 | M003 | 2013-05-26 | 50 |
| J004 | M005 | 2013-05-26 | 80 |
| J005 | M007 | 2013-05-26 | 40 |
+--------+------+------------+----------+
3 rows in set (0.00 sec)

4. Lihat perubahan yang terjadi di tabel “penjualan_hapus”.

mysql> select *from penjualan_hapus;


+--------+------+------------+----------+---------------------+----------------+
| NoJual | NoID | TglJual | Quantity | tgl_perubahan | nama_user |
+--------+------+------------+----------+---------------------+----------------+
| J001 | M001 | 2013-05-25 | 20 | 2013-05-27 02:19:34 | root@localhost |
| J002 | M002 | 2013-05-25 | 50 | 2013-05-27 02:19:34 | root@localhost |
+--------+------+------------+----------+---------------------+----------------+
2 rows in set (0.00 sec)

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.

mysql> Drop Trigger Hapus_Penjualan;


Query OK, 0 rows affected (0.00 sec)

III. Evaluasi
Soal :
1. Buatlah konfigurasi Trigger pada tabel Marketing yang berhubungan dengan
operasi INSERT
2. Buat Konfigurasi Trigger pada tabel Penjualan yang berhubungan dengan
operasi UPDATE

111

Anda mungkin juga menyukai