2016-03-02 3 views
0

У меня есть триггер для таблицы с именем A_TAB, который как только один столбец A типа символа. и у меня есть еще один стол DUP_A который имеет такое же колонку, как TAB_A .trigger для A_TAB следующихТриггер уровня выполнения

create or replace trigger A_trig 
    before insert on A_TAB 
    for each row 
declare 
    num1 varchar2(50):= null; 
    pragma autonomous_transaction; 
begin 
    select Wm_Concat(a) into num1 from DUP_A; 
    if num1 is null 
    then 
     num1:=:new.a; 
    else 
     num1:=num1||','||:new.a; 
    end if; 
    insert into DUP_A values(num1); 
    delete from DUP_A where rowid<>(select max(rowid) from DUP_A); 
commit; 
end; 

Здесь я конкатенации всех значений, которые во вновь вставленных и вставить его в один столбец DUP_A.

Это работает отлично, но мне нужно statement level trigger с той же функциональностью

Спасибо

ответ

0

Удаление «для каждой строки» положение изменится триггер на уровне строк, чтобы создает триггер уровня оператор .Но PL/SQL среды выполнения и заселяет две структуры данных (: новые и старые:), что функционирует подобно записи только когда триггер на уровне строк обжигали

0

Вы не можете ссылаться на данные (:new и :old) в триггере уровне оператора.

Смежные вопросы