Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle Trước khi Chèn HOẶC Cập nhật Ví dụ về trình kích hoạt

Sau đây là ví dụ về Trình kích hoạt TRƯỚC KHI CHÈN HOẶC CẬP NHẬT Oracle để thực hiện xác nhận hợp lệ trong khi chèn hoặc cập nhật các bản ghi trong bảng EMP.

Oracle TRƯỚC KHI CHÈN HOẶC CẬP NHẬT Ví dụ về trình kích hoạt

Trình kích hoạt dưới đây sẽ thực hiện hai kiểm tra sau trên bảng EMP. (1) Nếu chèn các bản ghi, nó sẽ kiểm tra cột hoa hồng không được cao hơn 500. (2) Nếu cập nhật, nó sẽ kiểm tra rằng cột CÔNG VIỆC không được đặt là 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;

Kiểm tra phía trên trình kích hoạt để chèn câu lệnh

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);

Đầu ra

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.

Kiểm tra trình kích hoạt trên để cập nhật tuyên bố

UPDATE EMP
SET sal = 900, job = NULL
WHERE empno = 7499;

Đầu ra

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.

Bạn có thể kiểm tra trình kích hoạt này trong lược đồ của mình, bằng cách tải xuống các bảng demo từ liên kết sau Tải xuống tập lệnh Scott Schema.

Xem thêm:

  • Làm thế nào để Sử dụng Bảng Tạm thời Toàn cục trong Thủ tục Oracle?
  • Ví dụ về Oracle Trigger với mệnh đề WHEN
  • Loại bảng trong ví dụ về thủ tục 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. Thêm phiên bản RAC mới theo cách thủ công

  2. Oracle Regexp để thay thế \ n, \ r và \ t bằng khoảng trắng

  3. Oracle PL / SQL - Tăng ngoại lệ do người dùng xác định với SQLERRM tùy chỉnh

  4. Ví dụ về công việc DBMS_SCHEDULER Chạy mỗi giờ

  5. Cập nhật nhiều giá trị cột trong bảng bằng cách sử dụng một truy vấn