Форум: "Базы";
Текущий архив: 2002.08.15;
Скачать: [xml.tar.bz2];
ВнизORA-04091- ошибка в ORACLE,кто решал такую проблему помогите пож. Найти похожие ветки
← →
KMZ (2002-07-26 08:01) [0]Создал триггер который реагирует на изменения в таблице users,
и добавляет его данные в другую таблицу,
но при добавлений или изменеий выходит сообщение ORA-04091
-------------------------------------------
"table is mutating triger/function may not see it"
---------------------------------------------
create or replace trigger sa.USERS
before update or insert or delete
on sa.USERS
FOR EACH ROW
Declare
Begin
Insert into sa.USER2(id,fname,lname,phone)
select id,FNAME,LNAME,PHONE from sa.USERS;
End;
-------------------------------------------------
Кто решал данную пробему помогите пож-ста,
всем заранее спасибо.
← →
dimis (2002-07-26 08:32) [1]Insert into sa.USER2(id,fname,lname,phone)
values(new.id,new.FNAME,new.LNAME,new.PHONE)
← →
Sergey13 (2002-07-26 08:56) [2]2KMZ (26.07.02 08:01)
Все правильно. Типичный пример мутирующей таблицы. Т.е. в момент когда USERS изменяется и изменения еще не закреплены ты пытаешься ее селектить => что твой запрос вернет - непресказуемо. А зачем ты на каждое изменение USERS пишешь ВСЕ записи из нее в USERS2. Странное поведние. Что за задача? Если ты хотел записать туда старые или новые значения то и пиши тогда OLD.id или NEW.Fname и т.д.... Если нет то надо в любом случае задачу смотреть и логику переделывать.
← →
MishGan (2002-07-26 09:58) [3]http://ehcap.narod.ru/development.htm
← →
Лёик (2002-07-26 10:51) [4]2KMZ
Всё уже обяснили, хочу добавить тока что если ты в User2 дублируешь данные или ведёшь статистику по User то лучше делать тригер не before, а after update or insert or delete...
Тогда и
Insert into sa.USER2(id,fname,lname,phone)
select id,FNAME,LNAME,PHONE from sa.USERS;
← →
KMZ (2002-07-26 13:50) [5]Ребята всем спасибо разобрался!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.08.15;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c