powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / триггер на удаление вызывается 2 раза на одну запись
3 сообщений из 3, страница 1 из 1
триггер на удаление вызывается 2 раза на одну запись
    #39559780
estap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, столкнулся со следующей особенностью работы ORACLE (11.2.0.2, 11.2.0.3, 12.2.0.1):
При удалении из таблицы иногда триггер на одну запись вызывается 2 раза.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
create or replace package PKG_SAVE is
	CountCalls number;
	CountDeleted number;
end;
/
create table TMP_TEST as select level IDCODE from dual connect by level <= 300000
/
create or replace trigger T_TMP_TEST_DELETE before delete on TMP_TEST for each row
begin
	pkg_save.CountCalls := coalesce(pkg_save.CountCalls, 0) + 1;
end;
/
set serveroutput on
/
begin
	for i in 1..5 loop
		pkg_save.CountCalls := 0;
		pkg_save.CountDeleted := 0;
		delete from TMP_TEST;
		pkg_save.CountDeleted := SQL%rowcount;
		dbms_output.put_line('deleted: ' || pkg_save.CountDeleted || ', trigger calls: ' || pkg_save.CountCalls);
		rollback;
	end loop;
end;
/
deleted: 300000, trigger calls: 300000
deleted: 300000, trigger calls: 300020
deleted: 300000, trigger calls: 300004
deleted: 300000, trigger calls: 300000
deleted: 300000, trigger calls: 300002

PL/SQL procedure successfully completed.



Кто-нибудь может объяснить такое поведение?
Пакет пытался заменить контекстом, но результат тот же.
Причем если в триггере записывать удаленные данные в другую таблицу, то лишние записи не сохраняться, оракл их откатывает.
А вот если их сохранять в автономной транзакции, то строчки задваиваются.
...
Рейтинг: 0 / 0
триггер на удаление вызывается 2 раза на одну запись
    #39559783
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
estap,

было тут уже такое же с инсертами, поищи по форуму по словам типа "рестарты" или "мини-откаты" и триггер
...
Рейтинг: 0 / 0
триггер на удаление вызывается 2 раза на одну запись
    #39559784
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / триггер на удаление вызывается 2 раза на одну запись
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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