Soal Tantangan
Pada bagian ini, mahasiswa diminta menyusun trigger secara mandiri untuk menunjukkan pemahaman terhadap penggunaan trigger pada MySQL. Tantangan ini tidak lagi hanya mengikuti langkah percobaan yang sudah tersedia pada aktivitas praktikum, tetapi menuntut mahasiswa membaca kebutuhan proses, mengenali event yang sesuai, lalu menuliskan definisi trigger yang tepat.
Agar jawaban lebih konsisten, gunakan tabel employee_join sebagai tabel utama dan buat tabel baru bernama employee_bak sebagai tabel cadangan. Gunakan struktur dan data yang sudah ditentukan pada modul ini.
Petunjuk Umum
Kerjakan tantangan ini dengan format berikut:
- buat tabel
employee_joinsesuai struktur yang diberikan, - masukkan data sesuai sumber data yang disediakan,
- buat tabel
employee_bakuntuk menampung data yang dihapus, - buat trigger yang sesuai dengan kebutuhan soal,
- uji trigger dengan menghapus salah satu data,
- tampilkan hasil pada
employee_joindanemployee_bak, - jelaskan secara singkat alasan penggunaan trigger tersebut.
Struktur Tabel
Tabel employee_join
Gunakan struktur kolom berikut:
idfirst_namelast_namestart_dateend_datesalarycityjob_id
Tabel employee_bak
Gunakan struktur kolom berikut:
idfirst_namelast_namestart_dateend_datesalarycityjob_id
Sumber Data
Data berikut digunakan sebagai file sumber impor menggunakan LOAD DATA.
1 Jason Martin 1996-07-25 2006-07-25 1235.56 Toronto 1
2 Alison Mathews 1976-03-21 1986-02-21 6662.78 Vancouver 2
3 James Smith 1978-12-12 1990-03-15 6545.78 Vancouver 2
4 Celia Rice 1982-10-24 1999-04-21 2345.78 Vancouver 3
5 Robert Black 1984-01-15 1998-08-08 2335.78 Vancouver 2
6 Linda Green 1987-07-30 1996-01-04 4323.78 New York 2
7 David Larry 1990-12-31 1998-02-12 7898.78 New York 3
8 James Cat 1996-09-17 2002-04-15 1233.78 Vancouver 2
10 Hercule Poirot 1973-05-23 2001-08-09 4313.98 Brussels 5
11 Lincoln Rhyme 1999-05-25 2011-07-13 3213.98 New York 6
12 Sherlock Holmes 1923-08-12 1945-07-21 4124.21 London 5Soal Tantangan
Buatlah sebuah trigger untuk menyimpan data yang dihapus dari tabel employee_join ke dalam tabel employee_bak.
Setelah trigger dibuat, uji dengan menghapus data yang memiliki id = 12 dari tabel employee_join.
Contoh hasil yang diharapkan:
Struktur tabel employee_bak
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id | int(11) | NO | | 0 | |
| first_name | varchar(15) | YES | | NULL | |
| last_name | varchar(15) | YES | | NULL | |
| start_date | date | YES | | NULL | |
| end_date | date | YES | | NULL | |
| salary | float(8,2) | YES | | NULL | |
| city | varchar(10) | YES | | NULL | |
| job_id | int(11) | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+Hasil pada tabel employee_join setelah delete
+----+------------+-----------+------------+------------+---------+-----------+--------+
| id | first_name | last_name | start_date | end_date | salary | city | job_id |
+----+------------+-----------+------------+------------+---------+-----------+--------+
| 1 | Jason | Martin | 1996-07-25 | 2006-07-25 | 1235.56 | Toronto | 1 |
| 2 | Alison | Mathews | 1976-03-21 | 1986-02-21 | 6662.78 | Vancouver | 2 |
| 3 | James | Smith | 1978-12-12 | 1990-03-15 | 6545.78 | Vancouver | 2 |
| 4 | Celia | Rice | 1982-10-24 | 1999-04-21 | 2345.78 | Vancouver | 3 |
| 5 | Robert | Black | 1984-01-15 | 1998-08-08 | 2335.78 | Vancouver | 2 |
| 6 | Linda | Green | 1987-07-30 | 1996-01-04 | 4323.78 | New York | 2 |
| 7 | David | Larry | 1990-12-31 | 1998-02-12 | 7898.78 | New York | 3 |
| 8 | James | Cat | 1996-09-17 | 2002-04-15 | 1233.78 | Vancouver | 2 |
| 10 | Hercule | Poirot | 1973-05-23 | 2001-08-09 | 4313.98 | Brussels | 5 |
| 11 | Lincoln | Rhyme | 1999-05-25 | 2011-07-13 | 3213.98 | New York | 6 |
+----+------------+-----------+------------+------------+---------+-----------+--------+Hasil pada tabel employee_bak
+----+------------+-----------+------------+------------+---------+--------+--------+
| id | first_name | last_name | start_date | end_date | salary | city | job_id |
+----+------------+-----------+------------+------------+---------+--------+--------+
| 12 | Sherlock | Holmes | 1923-08-12 | 1945-07-21 | 4124.21 | London | 5 |
+----+------------+-----------+------------+------------+---------+--------+--------+Hal yang Harus Ditunjukkan
- struktur tabel yang digunakan,
- data awal pada
employee_join, - definisi tabel
employee_bak, - definisi trigger yang dibuat,
- perintah
DELETEyang digunakan untuk menguji trigger, - hasil akhir pada
employee_joindanemployee_bak, - penjelasan singkat mengapa trigger tersebut sesuai.
Arah Analisis
Pada tantangan ini, mahasiswa diharapkan mampu menunjukkan bahwa trigger dapat digunakan untuk melakukan pencadangan otomatis terhadap data yang akan dihapus. Mahasiswa juga diharapkan memahami bahwa pada event DELETE, data yang dipakai di dalam trigger diambil dari nilai OLD, karena data tersebut masih tersedia sebelum baris benar-benar terhapus.
Penutup
Soal tantangan ini dirancang untuk melatih kemampuan mahasiswa dalam menyusun trigger secara lebih mandiri dan terarah. Melalui tantangan ini, mahasiswa tidak hanya berlatih membuat trigger AFTER DELETE atau BEFORE DELETE, tetapi juga belajar memanfaatkan trigger untuk menjaga jejak data melalui mekanisme pencadangan otomatis.