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

nhật ký kích hoạt oracle

Đây có thể là một trong những trường hợp hiếm hoi khi bạn có thể sử dụng pragma autonomous_transaction . Nó sẽ cho phép bạn cam kết mà không ảnh hưởng đến giao dịch chính của bạn. Sử dụng nó một cách thận trọng. Tìm hiểu thêm về giao dịch tự trị self_transaction pragma

Đây là một ví dụ:

   -- our error logging table 

   create table tb_log(
      msg varchar2(123)
    )
    /

   -- our working table
   create table tb_table(
     col11 number
    )
    /

-- procedure that is going to log errors


[email protected]> create or replace procedure log_error(p_msg in varchar2)
  2    is
  3      pragma autonomous_transaction;
  4    begin
  5      insert into tb_log(msg)
  6        values(p_msg);
  7      commit;
  8    end;
[email protected]> /

Procedure created.

[email protected]> create or replace trigger tr_tb_table
  2    before insert on tb_table
  3    for each row
  4    begin
  5      if mod(:new.col1, 2) != 0
  6      then
  7         log_error('Error!');
  8         raise_application_error(-20000, 'Error has ocurred!');
  9      end if;
 10    end;
 11  /

Trigger created.

[email protected]> select * from tb_log;

no rows selected

[email protected]> select * from tb_table;

no rows selected

[email protected]> insert into tb_table(col1) values(1);

insert into tb_table(col1) values(1)
            *
ERROR at line 1:
ORA-20000: Error has ocurred!
ORA-06512: at "NK.TR_TB_TABLE", line 5
ORA-04088: error during execution of trigger 'NK.TR_TB_TABLE'


[email protected]> select * from tb_log;

MSG
--------------------------------------------------------------------------------
Error!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle - Cập nhật các hàng có giá trị nhỏ nhất trong nhóm cột từ một bảng khác

  2. cách hợp nhất hai bảng để lấy các hàng mới cuối cùng từ bảng 2 và phần còn lại từ bảng 1

  3. Làm thế nào để thay thế các giá trị null bằng một văn bản?

  4. Muốn lấy sự khác biệt của hai cột trong Sql

  5. Xây dựng biểu đồ phụ thuộc bảng với truy vấn đệ quy