Skip to content

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:

  1. buat tabel employee_join sesuai struktur yang diberikan,
  2. masukkan data sesuai sumber data yang disediakan,
  3. buat tabel employee_bak untuk menampung data yang dihapus,
  4. buat trigger yang sesuai dengan kebutuhan soal,
  5. uji trigger dengan menghapus salah satu data,
  6. tampilkan hasil pada employee_join dan employee_bak,
  7. jelaskan secara singkat alasan penggunaan trigger tersebut.

Struktur Tabel

Tabel employee_join

Gunakan struktur kolom berikut:

  • id
  • first_name
  • last_name
  • start_date
  • end_date
  • salary
  • city
  • job_id

Tabel employee_bak

Gunakan struktur kolom berikut:

  • id
  • first_name
  • last_name
  • start_date
  • end_date
  • salary
  • city
  • job_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	5

Soal 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 DELETE yang digunakan untuk menguji trigger,
  • hasil akhir pada employee_join dan employee_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.