August 10, 2023 mysql
MySql Trigger Ketika Ada Kolom Yang Diperbarui
Trigger adalah objek berisi statement SQL yang otomatis dijalankan pada event terentu yang terjadi pada suatu tabel.
Salah satu event yang bisa menjalankan trigger adalah UPDATE
, yakni event yang terjadi ketika ada perubahan data pada row tabel.
Trigger UPDATE
tidak bisa didefinisikan berdasarkan perubahan pada kolom tabel tertentu, trigger UPDATE
hanya bisa didefinisikan berdasarkan perubahan pada tabelnya saja.
Cara untuk menangkap perubahan nilai suatu kolom, kita bisa menambahkan kondisional yang mengecek apakah suatu kolom diperbarui atau tidak, pada trigger UPDATE
suatu tabel.
Implementasinya, buat trigger UPDATE
pada tabel, kemudian di dalam trigernya tambahkan IF
yang membandingkan nilai kolom yang lama dengan nilai kolom yang baru, jika tidak sama artinya terjadi perubahan pada kolom tersebut.
Contoh implementasi trigger-nya.
DELIMITER $$
CREATE TRIGGER orders_updated
AFTER UPDATE ON orders
FOR EACH ROW
BEGIN
IF !(NEW.is_valid_for_payment <=> OLD.is_valid_for_payment) THEN
CALL do_something(orders) -- statement untuk menghandle trigger
END IF;
END $$
DELIMITER ;
Pada contoh diatas saya ingin menangkap setiap perubahan pada kolom is_valid_for_payment
pada tabel orders
.
Ketika ada perubahan pada kolom is_valid_for_payment
trigger akan memanggil procedure do_something
.