Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

ओरेकल ट्रिगर लॉग

यह उन दुर्लभ मामलों में से एक हो सकता है जब आप pragma autonomous_transaction . को नियोजित कर सकते हैं . यह आपके मुख्य लेनदेन को प्रभावित किए बिना आपको प्रतिबद्ध करने की अनुमति देगा। इसे सावधानी के साथ प्रयोग करें। स्वायत्त लेन-देन के बारे में अधिक जानें और autonomous_transaction pragma

यहां एक उदाहरण दिया गया है:

   -- 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. नमूना डेटा - संग्रहीत प्रक्रिया को निष्पादित करते समय समस्या जिसमें अद्यतन और सम्मिलित विवरण दोनों शामिल हैं

  2. आरडीएलसी लोकलरिपोर्ट एक्सेल में निर्यात वास्तव में धीमा

  3. तालिका उत्परिवर्तन त्रुटियों से कैसे बचें

  4. एक varchar2 () में सभी मैच खोजें

  5. केवल एक आईडी नंबर प्रदर्शित करने के लिए विशिष्ट फ़ील्ड और पंक्ति संख्या का चयन करने से डुप्लिकेट डेटा मिलता है