Database Trigger will be Executed Twice After Table Creation in SQL Developer 4.0.3 (Doc ID 1951793.1)

Last updated on JUNE 28, 2017

Applies to:

Oracle SQL Developer - Version 4.0 to 4.0 [Release 4]
Information in this document applies to any platform.

Symptoms

 DB trigger is being executed twice after creating table in SQL Developer 4.0.3. This issue occurs under the following conditions:

- Trigger is system trigger.

- Trigger contains "raise_application_error(-20000, 'CUSTOM ERROR');"

 

This issue can be reproduced with the following steps:

 

1. Create a table

for example:

create table testlog(log varchar2(255));


2. Create procedure as the following one:

for example:

 

SQL> create or replace procedure write_log(plog varchar2) is pragma
autonomous_transaction;
begin
  insert into testlog(log) values (plog);
  commit;
end;  

3. create system trigger which includes raise_application_error:

SQL> create or replace trigger insert_log after create on database
2  begin
   write_log('XXXXXX=' || ORA_DICT_OBJ_NAME);
   raise_application_error(-20000, 'CUSTOM ERROR');
end;  

Trigger created.


4. After creating a new table in SQL Developer, if you check table named testlog, you will find 2 inserted rows, meaning that trigger has been executed twice.

 

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms