Sintak Dasar
Di bawah ini yakni sintak dasar untuk menciptakan trigger database di Oracle PL/SQL: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 Program #1
Di bawah ini yakni rujukan aktivitas trigger Before Delete Or Insert Or Update di Oracle PL/SQL:CREATE OR REPLACE TRIGGER name_changes_trigger BEFORE DELETE OR INSERT OR UPDATE ON mahasiswa FOR EACH ROW DECLARE BEGIN IF length(:new.npm) < 7 THEN raise_application_error(-20015, 'Panjang NPM dihentikan kurang dari 7 digit'); END IF; DBMS_OUTPUT.put_line ('Nama Lama: ' || :OLD.nama); DBMS_OUTPUT.put_line ('Nama Baru: ' || :NEW.nama); END;
Coba Anda masukkan perintah insert data menyerupai dibawah ini dengan panjang NPM kurang dari 7 digit
INSERT INTO mahasiswa VALUES('001','Nanana','Teknik Komputer');
Maka akan keluar error
ERROR at line 1: ORA-20015: Panjang NPM dihentikan kurang dari 7 digit ORA-06512: at "NANO.NAME_CHANGES_TRIGGER", line 6 ORA-04088: error during execution of trigger 'NANO.NAME_CHANGES_TRIGGER'
Contoh Program#2
Di bawah ini yakni rujukan aktivitas trigger After Update di Oracle PL/SQL:DROP TRIGGER NANO.NAME_CHANGES_TRIGGER_2; CREATE OR REPLACE TRIGGER NANO.name_changes_trigger_2 AFTER UPDATE ON NANO.MAHASISWA FOR EACH ROW DECLARE BEGIN IF length(:new.npm) < 7 THEN raise_application_error(-20015, 'Panjang NPM dihentikan kurang dari 7 digit'); END IF; DBMS_OUTPUT.put_line ('Nama Lama: ' || :OLD.nama); DBMS_OUTPUT.put_line ('Nama Baru: ' || :NEW.nama); END; /Coba Anda test trigger yang telah anda buat dengan memakai perintah UPDATE menyerupai di bawah ini:
SQL> SET serveroutput on; SQL> UPDATE mahasiswa SET nama = 'Naura Krasiva' WHERE npm = '2015002'; Nama Lama: Nani Indriyani Nama Baru: Naura Krasiva 1 row updated.
Melihat Daftar Trigger
Di bawah ini yakni query untuk melihat daftar trigger yang ada di database:SQL> set linesize 1000; SQL> select owner, object_name, status 2 from all_objects 3 where object_type = 'TRIGGER'; OWNER OBJECT_NAME STATUS ------------------------------ ------------------------------ ------- NANO NAME_CHANGES_TRIGGER VALID NANO NAME_CHANGES_TRIGGER_2 VALID