Berikut ini adalah contoh Pemicu Oracle BEFORE INSERT OR UPDATE untuk melakukan validasi saat menyisipkan atau memperbarui catatan di tabel EMP.
Oracle SEBELUM INSERT ATAU UPDATE Contoh Pemicu
Pemicu di bawah ini akan melakukan dua pemeriksaan berikut pada tabel EMP. (1) Jika memasukkan catatan, ia akan memeriksa kolom komisi agar tidak lebih tinggi dari 500. (2) Jika memperbarui, maka ia akan memeriksa bahwa kolom JOB tidak boleh diset sebagai null.
CREATE OR REPLACE TRIGGER TRIG_EMP_BEF_UPD_INS BEFORE INSERT OR UPDATE ON EMP FOR EACH ROW BEGIN IF INSERTING THEN /* commission should not be greater than 500, for new record*/ IF :new.comm > 500 THEN raise_application_error ( -20001, 'Commission should not be greater than 500.'); END IF; ELSIF UPDATING THEN /* check for column JOB should not be set as null while update*/ IF :new.job IS NULL THEN raise_application_error (-20001, 'Column JOB should have a value.'); END IF; END IF; END;
Uji Di Atas Pemicu Untuk Menyisipkan Pernyataan
Insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) Values (7399, 'A.SMITH', 'CLERK', 7902, TO_DATE('12/17/1980 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 800, 550, 20);
Keluaran
Error at line 1 ORA-20001: Commission should not be greater than 500. ORA-06512: at "TRIG_EMP_BEF_UPD_INS", line 6 ORA-04088: error during execution of trigger 'TRIG_EMP_BEF_UPD_INS' Script Terminated on line 1.
Uji Di Atas Pemicu Untuk Pernyataan Pembaruan
UPDATE EMP SET sal = 900, job = NULL WHERE empno = 7499;
Keluaran
Error at line 2 ORA-20001: Column JOB should have a value. ORA-06512: at "TRIG_EMP_BEF_UPD_INS", line 12 ORA-04088: error during execution of trigger 'TRIG_EMP_BEF_UPD_INS' Script Terminated on line 2.
Anda dapat menguji pemicu ini di skema Anda, dengan mengunduh tabel demo dari tautan berikut Unduh skrip Scott Schema.
Lihat juga:
- Bagaimana Cara Menggunakan Tabel Sementara Global dalam Prosedur Oracle?
- Pemicu Oracle dengan Contoh klausa WHEN
- Tipe Tabel dalam Contoh Prosedur Oracle