powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Перехват исключений в процессе INSERT
12 сообщений из 12, страница 1 из 1
Перехват исключений в процессе INSERT
    #39515198
sma63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hello, World!
В базу данных периодически добавляются записи посредством sqlload.exe
При этом периодически возникает ситуация ORA-00001: unique constraint
Хочу перехватить данное исключения и предпринять некие спасательные действия. Например, назначить новое уникальное значение.
Но пока не понимаю как это сделать.
Делать триггер "INSERT BEFORE", вроде еще рано, а "INSERT AFTER", вроде уже поздно.
Как жЫть?!
...
Рейтинг: 0 / 0
Перехват исключений в процессе INSERT
    #39515199
sma63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Конечно, в "INSERT BEFORE" можно проверить уникальность и фсе такое.
Но это не изящщщьно воопще.
...
Рейтинг: 0 / 0
Перехват исключений в процессе INSERT
    #39515200
sma63,

Почитать про discardfile, залить беспроблемные строки, придумать механизм загрузки отброшенных записей.
...
Рейтинг: 0 / 0
Перехват исключений в процессе INSERT
    #39515205
sma63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это ещё менне изящьно.(((
Речь про организацию механизма автоматической обработки исключительных ситуаций.
Чтобы в результате исключения некая пользовательская процедура получила управление.
...
Рейтинг: 0 / 0
Перехват исключений в процессе INSERT
    #39515209
sma63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то типа, организовать триггер на исключительную ситуацию.
...
Рейтинг: 0 / 0
Перехват исключений в процессе INSERT
    #39515238
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sma63Что-то типа, организовать триггер на исключительную ситуацию.а что планируешь таки делать, как обрабатывать?
...
Рейтинг: 0 / 0
Перехват исключений в процессе INSERT
    #39515256
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sma63Что-то типа, организовать триггер на исключительную ситуацию.
Если льете лодырем (sqlldr*), то discard - правильный подход.
Скрипт после загрузки основного файла должен прогрузить discard (при наличии), используя другой конфиг - или с генерацией pk/uk, или в отдельную discard-таблицу.

Если заливка производится самопальной утилитой (sqlload.exe - я такой не знаю), то решайте на уровне утилиты.

Что еще можно сделать:

- реорганизовать загрузку в пользу external table и
http://www.oracle.com/technetwork/issue-archive/2009/09-mar/o29plsql-085126.html

- грузить лодырем в буферную таблицу и затем переливать в целевую посредством
http://www.oracle.com/technetwork/issue-archive/2009/09-mar/o29plsql-085126.html

- (вариация если целевая секционирована и схема секционирования позволяет): грузить лодырем в буферную таблицу, лечить дубли в буферной, заносить данные в целевую посредством exchange partition

...
...
...

- грузить лодырем с отключенными pk/uk constraints, построенными над неуникальными индексами, включать pk/uk обратно с опцией novalidate trust, далее лечить дубли.
...
Рейтинг: 0 / 0
Перехват исключений в процессе INSERT
    #39515272
сиквенс.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sma63назначить новое уникальное значениеназначай всем новое уникальное значение без разбору.
...
Рейтинг: 0 / 0
Перехват исключений в процессе INSERT
    #39515295
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IGNORE_ROW_ON_DUPKEY_INDEX
...
Рейтинг: 0 / 0
Перехват исключений в процессе INSERT
    #39515296
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хинтом
...
Рейтинг: 0 / 0
Перехват исключений в процессе INSERT
    #39515298
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И, кстати, почему не использовать dml error logging ? А потом в error log table глянуть?
...
Рейтинг: 0 / 0
Перехват исключений в процессе INSERT
    #39515357
д0kХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShtockИ, кстати, почему не использовать dml error logging ? А потом в error log table глянуть?
+1

или RTFM
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Перехват исключений в процессе INSERT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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