Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-04091: таблица изменяется, триггер/функция может не заметить это / 22 сообщений из 22, страница 1 из 1
29.11.2004, 14:10
    #32803994
kto-to
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04091: таблица изменяется, триггер/функция может не заметить это
Ошибка
ORA-04091: таблица DATA.ACC изменяется, триггер/функция может не заметить это ORA-06512: на "DATA.FE_T_ACC_UP_CUS", line 15 ORA-04088: ошибка во время выполнения триггера 'DATA.FE_T_ACC_UP_CUS'


как бороться с этим?
При вставке/обновлении проверяется,
что мы ссылаемся не на самый нижний уровень дерева.
(ведется и поддерживается триггерами поле-признак
возможности добавление детей в ветку)
...
Рейтинг: 0 / 0
29.11.2004, 14:14
    #32804007
Калина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04091: таблица изменяется, триггер/функция может не заметить это
Как оказвается ужасно все выглядит в переводе, я даже не понял о чем речь.
Можно конечно посмотреть тело триггера, однако я склоняюсь к тому, что автономные транзакции вас спасут
...
Рейтинг: 0 / 0
29.11.2004, 14:24
    #32804046
kto-to
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04091: таблица изменяется, триггер/функция может не заметить это
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE OR REPLACE TRIGGER ACC_UP_CUS BEFORE UPDATE  	ON ACC for each ROW
DECLARE   ggg raw( 16 ); 
BEGIN
   --'Родителем не может быть неконечный счет.';
   begin
     SELECT   1  into lvflag   from  acc   
     where rownum= 1    AND pk=:new.parent AND chend= 1 ;
     Raise_application_error(- 20000 , TO_CHAR(:new.parent));
   exception when no_data_found then null; 
   end ;
END;

...
Рейтинг: 0 / 0
29.11.2004, 14:49
    #32804129
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04091: таблица изменяется, триггер/функция может не заметить это
Калиная склоняюсь к тому, что автономные транзакции вас спасутНе спасут. Поскольку результат проверки в автономной и в основной транзакциях может различаться, и как следствие этого - нарушение логической целостности данных.
...
Рейтинг: 0 / 0
29.11.2004, 14:52
    #32804141
kto-to
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04091: таблица изменяется, триггер/функция может не заметить это
это как правило единичные операции -
реакция на действия пользователя в интерфейсе.
На вход приходит в основном 1 строка.
...
Рейтинг: 0 / 0
29.11.2004, 14:54
    #32804150
kto-to
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04091: таблица изменяется, триггер/функция может не заметить это
Калина
Можно конечно посмотреть тело триггера, однако я склоняюсь к тому, что автономные транзакции вас спасут
что за автономныке транзакции?
Как ее организовать ?
и как она меня спасет?
...
Рейтинг: 0 / 0
29.11.2004, 14:56
    #32804155
kto-to
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04091: таблица изменяется, триггер/функция может не заметить это
А если все проверки вынести в функцию,
которую вызывать в триггере - это его полечит?
(ошибка пропадет?)
...
Рейтинг: 0 / 0
29.11.2004, 14:59
    #32804167
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04091: таблица изменяется, триггер/функция может не заметить это
kto-to ОшибкаORA-04091как бороться с этим?Ёлы-палы, ведь есть же поиск .
...
Рейтинг: 0 / 0
29.11.2004, 15:29
    #32804236
Мастер SQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04091: таблица изменяется, триггер/функция может не заметить это
Стандартный глюк у начинающих писать триггера.
! Нельзя читать из таблицы которую обновляешь в триггере FOR EACH ROW
Есть стандартные процедуры обхода мутирования, учите мат часть!!!

С уважением, Мастер SQL
...
Рейтинг: 0 / 0
29.11.2004, 15:44
    #32804279
kto-to
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04091: таблица изменяется, триггер/функция может не заметить это
Мастер SQLСтандартный глюк у начинающих писать триггера.
! Нельзя читать из таблицы которую обновляешь в триггере FOR EACH ROW
Есть стандартные процедуры обхода мутирования, учите мат часть!!!

С уважением, Мастер SQL

3.1415926-ец .....
Вместо того чтобы раскидывать пальцы во все стороны
просто показал бы как решить эту конкретную ситуацию.
А то понтов больше чем знаний.

все обходитсяя в данном случае просто
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE OR REPLACE TRIGGER ACC_UP_CUS
AFTER UPDATE  	ON ACC for each ROW
DECLARE      lvflag number; 
PRAGMA AUTONOMOUS_TRANSACTION; 
BEGIN
...
COMMIT;
END;
...
Рейтинг: 0 / 0
29.11.2004, 15:49
    #32804294
KonstN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04091: таблица изменяется, триггер/функция может не заметить это
2 kto-to
Не всегда автономные транзакции помогают, посмотри на всякий случай
http://asktom.oracle.com/~tkyte/Mutate/index.html
...
Рейтинг: 0 / 0
29.11.2004, 16:12
    #32804347
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04091: таблица изменяется, триггер/функция может не заметить это
kto-toвсе обходитсяя в данном случае просто
Код: plaintext
... PRAGMA AUTONOMOUS_TRANSACTION; ...
:) Наивный. Автономные транзакции - не панацея . Особенно при реализации ограничений целостности данных.
...
Рейтинг: 0 / 0
29.11.2004, 16:50
    #32804444
kto-to
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04091: таблица изменяется, триггер/функция может не заметить это
ElicОсобенно при реализации ограничений целостности данных.

Я каждый раз буду видеть данные на момент начала основной транзакци*
(с некоторыми оговорками).

Все обновления которые противоречат этой структуре не пройдут.
Ссылаться из вставляемых данных на данные, которые вставляются
врятли будут, т.к они идут атомарными операциями из интерфейса
(и никто такие динозавры не будет создавать)

А вообще лажевая реализация мутирующих триггеров в оракле,
ведь я ничего super-pupper реализовывать не хотел.

Кстати не видет ли в таблице
AFTER EACH ROW триггер строку, которая его породила?
...
Рейтинг: 0 / 0
29.11.2004, 16:57
    #32804461
kto-to
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04091: таблица изменяется, триггер/функция может не заметить это
ElicАвтономные транзакции - не панацея
Предложи другой выход, чтобы не пришлось городить
хитроумной работы с временными/постоянными таблицами
для хранения списка гуидов.
...
Рейтинг: 0 / 0
29.11.2004, 16:59
    #32804464
kto-to
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04091: таблица изменяется, триггер/функция может не заметить это
Как включить грязное чтение в автономной/любой транзакции?
похоже это меня может спасти.
...
Рейтинг: 0 / 0
29.11.2004, 17:04
    #32804479
KonstN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04091: таблица изменяется, триггер/функция может не заметить это
Нет такого в Оракле.
Только не начинай флейм про нужно или не нужно оно здесь - его просто нет.
...
Рейтинг: 0 / 0
29.11.2004, 17:07
    #32804491
kto-to
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04091: таблица изменяется, триггер/функция может не заметить это
KonstN2 kto-to
Не всегда автономные транзакции помогают, посмотри на всякий случай
http://asktom.oracle.com/~tkyte/Mutate/index.html

Спасибо. Это буду делать когда припечет.
...
Рейтинг: 0 / 0
29.11.2004, 17:09
    #32804494
kto-to
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04091: таблица изменяется, триггер/функция может не заметить это
KonstNНет такого в Оракле.
Только не начинай флейм про нужно или не нужно оно здесь - его просто нет.
нет так нет. хотя не скрою меня это огорчает.
...
Рейтинг: 0 / 0
29.11.2004, 17:29
    #32804557
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04091: таблица изменяется, триггер/функция может не заметить это
kto-toКстати не видет ли в таблице
AFTER EACH ROW триггер строку, которая его породила?Мутация относится не к какой-то строке, а ко всей таблице. kto-toПредложи другой выход, чтобы не пришлось городить
хитроумной работы с временными/постоянными таблицами
для хранения списка гуидов.В предложенном поиске анти-мутаций предостаточно.

А по поводу integrity - надежную гарантию твоей целостности данных даст, IMHO, только блокировка папы с момента проверки до завершения транзакции вставки/редактирования ребёнка
...
Рейтинг: 0 / 0
29.11.2004, 18:15
    #32804679
Калина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04091: таблица изменяется, триггер/функция может не заметить это
kto-toэто как правило единичные операции -
реакция на действия пользователя в интерфейсе.
На вход приходит в основном 1 строка.
В таком случае спасет , если одна строка и коммит сразу.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
05.07.2021, 18:50
    #40081923
Сусами
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04091: таблица изменяется, триггер/функция может не заметить это
kto-to, была подобная задача. Решил с помощью execute immediate.
С уважением Новичок SQL!
...
Рейтинг: 0 / 0
05.07.2021, 19:38
    #40081935
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-04091: таблица изменяется, триггер/функция может не заметить это
Сусами, молодец. У тебя и топор - отличный инструмент. Для отрубания собственной головы.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-04091: таблица изменяется, триггер/функция может не заметить это / 22 сообщений из 22, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]