Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle Sebelum Menyisipkan ATAU Memperbarui Contoh Pemicu

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memulai Pengembang Oracle SQL di MacOSX

  2. Menyetel SQL

  3. Cara Mendapatkan Tanggal Saat Ini di Oracle

  4. memanggil proc yang tersimpan melalui dblink

  5. 12c VARCHAR2(32767)