Berikut adalah cara penggunaan Trigger pada Oracle
Format :
CREATE [OR REPLACE ] TRIGGER trigger_name
{BEFORE | AFTER | INSTEAD OF }
{INSERT [OR] | UPDATE [OR] | DELETE}
[OF col_name]
ON table_name
[REFERENCING OLD AS o NEW AS n]
[FOR EACH ROW]
WHEN (condition)
DECLARE
Declaration-statements
BEGIN
Executable-statements
EXCEPTION
Exception-handling-statements
END;
Contoh 1 :
CREATE OR REPLACE TRIGGER tKaryawan
BEFORE DELETE OR INSERT OR UPDATE
ON karyawan FOR EACH ROW
DECLARE
BEGIN
IF length(:new.nip) < 3 THEN
raise_application_error(-20015, 'NIP tidak boleh kurang dari 3 digit');
END IF;
DBMS_OUTPUT.put_line ('Nama Lama: ' || :OLD.nama);
DBMS_OUTPUT.put_line ('Nama Baru: ' || :NEW.nama);
END;
/
Jalankan :
INSERT INTO karyawan VALUES('102','Budi','Kontrak');
Maka akan keluar error
ERROR at line 1:
ORA-20015: Panjang NIP tidak boleh kurang dari 3 digit
ORA-06512: at "NANO.NAME_CHANGES_TRIGGER", line 6
ORA-04088: error during execution of trigger 'NANO.NAME_CHANGES_TRIGGER'
Contoh 2 :
CREATE OR REPLACE TRIGGER uKaryawan
AFTER UPDATE ON karyawan FOR EACH ROW
DECLARE
BEGIN
IF length(:new.nip) < 3 THEN
raise_application_error(-20015, 'NIP tidak boleh kurang dari 3 digit');
END IF;
DBMS_OUTPUT.put_line ('Nama Lama: ' || :OLD.nama);
DBMS_OUTPUT.put_line ('Nama Baru: ' || :NEW.nama);
END;
/
Jalankan :
SQL> SET serveroutput on;
SQL> UPDATE karyawan SET nama = 'Hartono' WHERE npm = '1023';
Nama Lama: Budi
Nama Baru: Hartono
1 row updated.
Catatan :
untuk menghapus trigger gunakan sintak :
DROP TRIGGER nama_trigger;
contoh :
DROP TRIGGER tkaryawan;
DROP TRIGGER ukaryawan;