Czy spust można zablokować; Jak można ustalić, że tak jest?

W odpowiedziCzy przegapię jakiekolwiek zmiany, jeśli zastąpię wyzwalacz wyroczni podczas działania mojej aplikacji?Poszedłem sprawdzić, czy wyzwalacz został zablokowany przez instrukcję INSERT. Nie było i nie mogę znaleźć niczego w Internecie, aby zasugerować, że spust można zablokować.

Jeśli wykonam następujące czynności w jednej sesji:

create table test_trigger (id number);
create table test_trigger_h (id number);

create or replace trigger test_trigger_t 
 after insert on test_trigger for each row
begin
  insert into test_trigger_h (id) values (:new.id);
end;    
/

insert into test_trigger
 select level
   from dual
connect by level <= 1000000;

a następnie w drugiej sesji spróbuj dowiedzieć się, jakie blokady występują, otrzymuję następujące informacje:

select object_name, object_type
     , case l.block
            when 0 then 'Not Blocking'
            when 1 then 'Blocking'
            when 2 then 'Global'
       end as status
     , case v.locked_mode
            when 0 then 'None'
            when 1 then 'Null'
            when 2 then 'Row-S (SS)'
            when 3 then 'Row-X (SX)'
            when 4 then 'Share'
            when 5 then 'S/Row-X (SSX)'
            when 6 then 'Exclusive'
            else to_char(lmode)
       end as mode_held
  from v$locked_object v
  join dba_objects d
    on v.object_id = d.object_id
  join v$lock l
    on v.object_id = l.id1
  join v$session s
    on v.session_id = s.sid
       ;

OBJECT_NAME          OBJECT_TYPE          STATUS          MODE_HELD
-------------------- -------------------- --------------- ---------------
TEST_TRIGGER         TABLE                Not Blocking    Row-X (SX)
TEST_TRIGGER_H       TABLE                Not Blocking    Row-X (SX)

Według Oracle wyzwalaczem jestnie być zablokowanym.

Jeśli jednak spróbuję zastąpić wyzwalacz, gdy uruchomiona jest instrukcja INSERT, nie zostanie ona zastąpiona przed zakończeniem instrukcji (nie obejmuje zatwierdzenia), co oznacza, że ​​wyzwalaczjest zablokowany.

Czy w tej sytuacji spust jest zablokowany, a jeśli tak, to w jaki sposób można to określić?

questionAnswers(1)

yourAnswerToTheQuestion