Digitaro adalah perusahaan fintech yang menerapkan sistem insentif otomatis berbasis jam kerja dan performa. Sistem mereka sangat tergantung pada trigger dan stored procedure yang kompleks, dengan skenario sebagai berikut:
- Tabel employee memiliki kolom: ssn, name, salary, bonus, total_hours_project, dan performance_grade.
- Tabel works_on memiliki kolom: essn, project_id, hours.
- Setiap kali jam kerja dimasukkan, total_hours_project diperbarui otomatis.
- Jika total_hours_project > 200, maka bonus otomatis diberikan sebesar 20% dari gaji pokok.
- Jika performance_grade diubah menjadi "A", maka stored procedure akan memanggil prosedur pemberian bonus tambahan.
- Terdapat trigger untuk menolak semua insert/update yang menyebabkan salary + bonus > 1.5 * (salary supervisor).
Jika terdapat trigger pada employee yang akan:
- Setelah update salary ➝ memanggil stored procedure recalculate_bonus()
- Namun, ternyata recalculate_bonus() juga melakukan UPDATE employee SET salary = salary + 500 jika jam kerja > 250.
Apa yang mungkin terjadi?