Xpoint
   [напомнить пароль]

Странное срабатывание триггера при вставке с несколькими select

Метки: [без меток]
2009-03-17 18:24:10 [обр] Thirteensmay(3/157)[досье]

В таблице t_object стоит BI триггер на object_id

create or replace trigger TR_OBJECT_BI
 before insert on T_OBJECT
 for each row 
when (NEW.OBJECT_ID is null)
declare
 begin
 select SQ_OBJECT.NEXTVAL 
  into :NEW.OBJECT_ID
 from dual;
 end TR_OBJECT_BI;

Запрос

insert into t_object
(object_id)
(select 1000 from dual)

как ему и полагается вставляет 1000, триггер не срабатывает.
Однако запрос

insert into t_object
(object_id, type_object_id)
(select (select 1000 from dual),
        (select 1 from dual) from dual)

вставляет не 1000, 1 а SQ_OBJECT.NEXTVAL, 1
триггер срабатывает, у него на входе object_id is null ;(
если триггер отключить то вставляет 1000, 1.

Такое поведение замечено всегда когда select не один, даже если все завернуто в один как в примере. Можно ли это недоразумение както обойти (т.е. чтобы триггера не срабатывали) средствами SQL ?

Powered by POEM™ Engine Copyright © 2002-2005