Triggers Pada PL/SQL

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


Share on Google Plus

About Unknown

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment
    Facebook Comment

0 comments:

Post a Comment