Sintak Dasar
Di bawah ini adalah sintak dasar untuk membuat 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 adalah contoh program 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 tidak boleh 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 seperti 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 tidak boleh 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 adalah contoh program 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 tidak boleh 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 menggunakan perintah UPDATE seperti 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 adalah 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
0 comments:
Post a Comment