Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Обработка ошибок в plpgsql
|
|||
|---|---|---|---|
|
#18+
Допустим, внутри процедуры выполняется оператор insert и существует вероятность, что вставляемая запись уже существует в таблице. Как данную ситуацию корректно обработать в plpgsql? Существуют ли средства, аналогичные тем, что предоставляет Oracle и Interbase? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2005, 18:48 |
|
||
|
Обработка ошибок в plpgsql
|
|||
|---|---|---|---|
|
#18+
35.7.5. Trapping Errors +универсальный способ - проверять перед вставкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 03:21 |
|
||
|
Обработка ошибок в plpgsql
|
|||
|---|---|---|---|
|
#18+
За ссылку однозначно спасибо. Что касается совета проверять перед вставкой - это плохой совет. Это работает, но не всегда. К примеру, вчера я завел таблицу с полями id и name. По name сделал уникальный индекс. Если проверять наличие записи, а затем делать вставку, то при обычной нагрузке все работает, а вот когда я пустил 100 потоков параллельно, то получил весьма нехилое количество попыток создать дубликаты по полю name. То есть после того как один из потоков установил тот факт, что некая запись отсутствует, другой поток сделал commit, и операция вставки для первого потока обломилась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 08:58 |
|
||
|
Обработка ошибок в plpgsql
|
|||
|---|---|---|---|
|
#18+
Вячеслав СкорыхЗа ссылку однозначно спасибо. Что касается совета проверять перед вставкой - это плохой совет. Это работает, но не всегда. К примеру, вчера я завел таблицу с полями id и name. По name сделал уникальный индекс. Если проверять наличие записи, а затем делать вставку, то при обычной нагрузке все работает, а вот когда я пустил 100 потоков параллельно, то получил весьма нехилое количество попыток создать дубликаты по полю name. То есть после того как один из потоков установил тот факт, что некая запись отсутствует, другой поток сделал commit, и операция вставки для первого потока обломилась. если вставка из другой таблицы - обычно так (в одном флаконе) Код: plaintext Код: plaintext Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 10:48 |
|
||
|
Обработка ошибок в plpgsql
|
|||
|---|---|---|---|
|
#18+
assaа вообще-то отлуп на вставку - нормальная ситуация - тапки ушли - твое дело отлуп обработать (дать другие тапки / не давать тапок) - от логики. Полностью согласен. Потому-то я и заинтересовался, в первую очередь, штатными средствами обработки таких ситуаций в plpgsql. Было бы обидно, если бы их не оказалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 11:05 |
|
||
|
Обработка ошибок в plpgsql
|
|||
|---|---|---|---|
|
#18+
Присоединяюсь к вопросу. На выходе должны получить максимально быстродействующую и легкую вставку в базу при, скажем, при 500 клиентах. Ситуации: 1) Есть таблица, комбинация полей в которой должна быть уникальна. Решения: Уникальный индекс. - Какие подводные камни? Как уникальный индекс влияет на скорость вставки? Блокировка таблицы - не подходит. Работа клиентов станет последовательной. Уровень изоляции транзацкции? 2) Тоже самое, только ввиду огромного размера таблицы уникальность нужно проверить за последние 7 дней. Уникальный индекс уже не подходит. Делать партиционирование? Накладывать ограничение уникальным индексом на "текущую" партицию? Кто сталкивался с подобными задачами - раскажите пожалуйста как решаются данные задачи? Заранее благодарен! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2008, 05:24 |
|
||
|
Обработка ошибок в plpgsql
|
|||
|---|---|---|---|
|
#18+
Хм...странно почему никто не посоветовал использовать ексепшены? Например Begin Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2008, 12:25 |
|
||
|
Обработка ошибок в plpgsql
|
|||
|---|---|---|---|
|
#18+
raistХм...странно почему никто не посоветовал использовать ексепшены? вы невнимательны: http://sql.ru/forum/actualthread.aspx?tid=161470#1334009 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2008, 14:04 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=32925350&tid=2004570]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 311ms |

| 0 / 0 |
