Oracle Apex 13 - Trigger di PL/SQL
Assalamu'alaikum
Trigger di PLSQL
Trigger Alert Insert / Update Database
CREATE OR REPLACE TRIGGER Trigger_Barang BEFORE INSERT OR UPDATE ON BARANG FOR EACH ROW DECLARE BEGIN IF length (:new.Nama_Barang) < 3 THEN raise_application_error(-20015, 'Panjang NAME tidak boleh kurang dari tiga'); END IF; END; |
- apakah akan di letakan pada before atau after (insert, update dan delete)
- trigger akan bereaksi ketika action terjadi pada tabel apa?
- dan for each row digunakan untuk action trigger apa yang terjadi pada setiap attribute tabel tersebut.
Trigger Membuat Tabel Log Otomatis ketika Update dan Delete Data
Next kita coba buat trigger selanjutnya yaitu membuat trigger membuat tabel log otomatis ketika ada data yang di update dan delete. Log tabel yang saya maksud disini sebenernya bukan log juga sih tapi lebih ke log history data yang telah di update atau delete. Jatuhnya seperti backup data setelah user melakukan update atau delete. Langsung saja, kita akan buat trigger nya namun kali ini kita akan buat dengan mode gui atau object browser agar kalian lebih memahaminya juga.Untuk membuat trigger di mode object browser caranya cukup mudah, yaitu kita tambahkan pada ikon plus di pojok kanan atas, lalu klik pada trigger.
Selanjutnya, kita buat triggernya untuk tabel yang mana. Karena disini saya ingin membuat trigger untuk tabel barang, maka tabel namenya kita pilih tabel barang. Setelah itu kita klik next.
Pada pengisian form ini sama seperti pada sql command sebelumnya. Yaitu kita isikan nama triggernya, lalu isikan before atau after pada optionnya apakah insert, update atau delete. Disini karena saya ingin membuat log untuk update terlebih dahulu, maka saya pilih yang option update. Dan jangan lupa untuk for each rownya agar diceklis ya. Dan untuk perintah triggernya kita isikan manual pada script trigger body. Setelah itu klik next.
Bagi yang mau script triggernya kalian tinggal copy aja script berikut ini.
INSERT INTO BARANG_LOG(Kode_Barang, Nama_Barang, Satuan_Barang, Stok_Barang, Tanggal, Type) VALUES (:OLD.Kode_BARANG, :OLD.Nama_Barang, :OLD.Satuan_Barang, :OLD.Stok_Barang, CURRENT_TIMESTAMP, 'UPDATE'); |
Maka jika pilihan object browsernya kita arahkan ke list trigger, trigger yang kita buat dengan nama trigger_update_barang tadi akan muncul di list trigger.
Jika sudah muncul trigger pada list triggernya, maka ketika kita ingin update data, semisal disini saya ingin update data atau row sikat gigi menjadi pasta gigi.
Maka tabel log baru akan terbentuk dari hasil trigger yang kita buat tadi. Isi datanya adalah data lama sebelum data sikat gigi diubah menjadi data pasta gigi. Dan sebagai keterangan disini saya memberikan kolom attribute baru yaitu type untuk membedakan apakah data yang masuk ke tabel barang_log adalah tabel hasil update atau tabel hasil delete yang nanti kita akan buat juga.
Sekarang setelah berhasil pada tabel update, kita buat juga trigger ketika user ingin delete data pada tabel barang. Step-stepnya sama seperti trigger yang update data. Bedanya hanya di scriptnya dan pemilihan optionnya saja. Yaitu menggunakan option delete. Dan di scriptnya hanya berbeda pada kolom type nya yaitu informasi yang menandakan trigger ini untuk data yang telah di delete dari tabel barang.
Berikut script triggernya.
INSERT INTO BARANG_LOG(Kode_Barang, Nama_Barang, Satuan_Barang, Stok_Barang, Tanggal, Type) VALUES (:OLD.Kode_BARANG, :OLD.Nama_Barang, :OLD.Satuan_Barang, :OLD.Stok_Barang, CURRENT_TIMESTAMP, 'DELETE'); |
Demikian pembahasan mengenai trigger di PLSQL pada oracle application express. Semoga membantu dan memudahkan pembaca untuk mempelajari trigger pada PLSQL. Sekian dari saya, jika ada yang ingin di tanyakan bisa lemparkan di kolom komentar. Terima kasih sudah berkunjung, sampai berjumpa di pembahasan oracle database selanjutnya. Terima kasih.