
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
04.09.2017, 16:23
|
|||
|---|---|---|---|
|
|||
Перехват исключений в процессе INSERT |
|||
|
#18+
Hello, World! В базу данных периодически добавляются записи посредством sqlload.exe При этом периодически возникает ситуация ORA-00001: unique constraint Хочу перехватить данное исключения и предпринять некие спасательные действия. Например, назначить новое уникальное значение. Но пока не понимаю как это сделать. Делать триггер "INSERT BEFORE", вроде еще рано, а "INSERT AFTER", вроде уже поздно. Как жЫть?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2017, 16:26
|
|||
|---|---|---|---|
|
|||
Перехват исключений в процессе INSERT |
|||
|
#18+
Конечно, в "INSERT BEFORE" можно проверить уникальность и фсе такое. Но это не изящщщьно воопще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2017, 16:28
|
|||
|---|---|---|---|
|
|||
Перехват исключений в процессе INSERT |
|||
|
#18+
sma63, Почитать про discardfile, залить беспроблемные строки, придумать механизм загрузки отброшенных записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2017, 16:33
|
|||
|---|---|---|---|
|
|||
Перехват исключений в процессе INSERT |
|||
|
#18+
Это ещё менне изящьно.((( Речь про организацию механизма автоматической обработки исключительных ситуаций. Чтобы в результате исключения некая пользовательская процедура получила управление. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2017, 16:36
|
|||
|---|---|---|---|
|
|||
Перехват исключений в процессе INSERT |
|||
|
#18+
Что-то типа, организовать триггер на исключительную ситуацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2017, 17:15
|
|||
|---|---|---|---|
Перехват исключений в процессе INSERT |
|||
|
#18+
sma63Что-то типа, организовать триггер на исключительную ситуацию.а что планируешь таки делать, как обрабатывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2017, 17:32
|
|||
|---|---|---|---|
|
|||
Перехват исключений в процессе INSERT |
|||
|
#18+
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, далее лечить дубли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2017, 18:07
|
|||
|---|---|---|---|
|
|||
Перехват исключений в процессе INSERT |
|||
|
#18+
sma63назначить новое уникальное значениеназначай всем новое уникальное значение без разбору. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2017, 18:40
|
|||
|---|---|---|---|
Перехват исключений в процессе INSERT |
|||
|
#18+
IGNORE_ROW_ON_DUPKEY_INDEX ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2017, 18:40
|
|||
|---|---|---|---|
Перехват исключений в процессе INSERT |
|||
|
#18+
хинтом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2017, 18:43
|
|||
|---|---|---|---|
Перехват исключений в процессе INSERT |
|||
|
#18+
И, кстати, почему не использовать dml error logging ? А потом в error log table глянуть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
04.09.2017, 21:27
|
|||
|---|---|---|---|
|
|||
Перехват исключений в процессе INSERT |
|||
|
#18+
ShtockИ, кстати, почему не использовать dml error logging ? А потом в error log table глянуть? +1 или RTFM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=52&mobile=1&tid=1885314]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
160ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 497ms |

| 0 / 0 |
