pragma autonomous_transaction in einem trigger

Ich geschrieben habe einen trigger für eine Tabelle, die löscht die Daten aus der anderen Tabelle über eine Bedingung.
Der trigger hat pragma autonomous_transaction und auslösen funktioniert wie vorgesehen. Allerdings Frage ich mich, ob es sein kann, Probleme in die Zukunft, sagen, wenn Daten eingefügt werden, die von mehreren Benutzern/Quellen zur gleichen Zeit etc...Irgendwelche Vorschläge?

Quelle Tabelle t1:

--------------------------------------------
| user_id | auth_name1 | auth_name2 | data |
--------------------------------------------
|  1      |  Name1     |  Name2      | d1  |
|  2      |  Name3     |  Name4      | d2  |
|  3      |  Name5     |  Name1      | d3  |
--------------------------------------------

Ziel-Tabelle t2:

   ------------------------------------------------
   | record_id |  identifier | status |   data1   |
   ------------------------------------------------
   |  100      |  Broken     |  11    |   Name1   |
   |  101      |  Reminder   |  99    |   Name1   |
   |  102      |  Broken     |  99    |   Name2   |
   |  103      |  Broken     |  11    |   Name4   |
   ------------------------------------------------

Trigger-code:

create or replace trigger "ca"."t$t1"
    after update of auth_name1, auth_name2 on ca.t1  
    for each row
declare
    pragma autonomous_transaction;
begin
    if :new.auth_name1 is not null and :new.auth_name2 is not null then
         delete from ca.t2 ml
         where ml.identifier = 'Broken'
         and data1 = regexp_substr(:new.auth_name1, '\S+$')||' '||regexp_substr(:new.auth_name1, '^\S+')
         and status = 11;
         commit;
    end if;
end t$t1;

InformationsquelleAutor Jaanna | 2014-05-21

Schreibe einen Kommentar