Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Может ли Oracl вызвать триггер на обновление колонки, если самого обновления не было  [new]
acronim
Member

Откуда:
Сообщений: 137
Может ли Oracl вызвать триггер на обновление колонки, если самого обновления не было. В приведенном примере иногда оракл выбрасывает сообщение E_LOGICAL_DELETE [from 0 to 0], что по идее не возможно

PS Колонка SYS_DELSTATE NOT NULL

CREATE OR REPLACE TRIGGER UD2_ADM.TR_CTR_LIST_ROLE_TYPE_DS  BEFORE UPDATE
   OF SYS_DELSTATE
  ON CTR_LIST_ROLE_TYPE  
  FOR EACH ROW
 -- autogenerated by sys_create_triggers_sys_delst 
 -- 0 <--> 1 --> 2
BEGIN       
  if (
       ((:old.sys_delstate = 0) and (:new.sys_delstate = 1)) or
       ((:old.sys_delstate = 1) and (:new.sys_delstate = 2)) or
       ((:old.sys_delstate = 1) and (:new.sys_delstate = 0)) 
  )  
  then
    NULL; -- OK 
  else  
    raise_application_error(-20013, 'E_LOGICAL_DELETE [from '||:old.sys_delstate||' to '||:new.sys_delstate||']');
  end if;  
 END;
/
19 авг 06, 13:52    [3027956]     Ответить | Цитировать Сообщить модератору
 Re: Может ли Oracl вызвать триггер на обновление колонки, если самого обновления не было  [new]
Падонак
Member [заблокирован]

Откуда: из лесу
Сообщений: 1775
думаю, что это означает смену с нуля на ноль
19 авг 06, 14:19    [3027996]     Ответить | Цитировать Сообщить модератору
 Re: Может ли Oracl вызвать триггер на обновление колонки, если самого обновления не было  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116093
acronim
Может ли Oracl вызвать триггер на обновление колонки, если самого обновления не было. В приведенном примере иногда оракл выбрасывает сообщение E_LOGICAL_DELETE [from 0 to 0], что по идее не возможно

PS Колонка SYS_DELSTATE NOT NULL

CREATE OR REPLACE TRIGGER UD2_ADM.TR_CTR_LIST_ROLE_TYPE_DS  BEFORE UPDATE
   OF SYS_DELSTATE
  ON CTR_LIST_ROLE_TYPE  
  FOR EACH ROW
 -- autogenerated by sys_create_triggers_sys_delst 
 -- 0 <--> 1 --> 2
BEGIN       
  if (
       ((:old.sys_delstate = 0) and (:new.sys_delstate = 1)) or
       ((:old.sys_delstate = 1) and (:new.sys_delstate = 2)) or
       ((:old.sys_delstate = 1) and (:new.sys_delstate = 0)) 
  )  
  then
    NULL; -- OK 
  else  
    raise_application_error(-20013, 'E_LOGICAL_DELETE [from '||:old.sys_delstate||' to '||:new.sys_delstate||']');
  end if;  
 END;
/


Не может. Проверьте или продемонстрируйте UPDATEs.
Я думаю, что Вы понимаете, что для Oracle изменение значения колонки с 0 на 0 является точно таким же обновлением, как с 0 на миллион.
19 авг 06, 14:45    [3028040]     Ответить | Цитировать Сообщить модератору
 Re: Может ли Oracl вызвать триггер на обновление колонки, если самого обновления не было  [new]
acronim_
Guest
уже понимаю, всем спасибо
19 авг 06, 16:31    [3028226]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить