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

start [/forum/topic.php?fid=52&msg=39515357&tid=1885314]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
157ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 245ms |
| total: | 517ms |

| 0 / 0 |
