Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
plpgsql. Как получить текст ошибки.
|
|||
|---|---|---|---|
|
#18+
Пишется процедура, которая среди всех действий будет делать insert в таблицу, на которой есть уникальные индексы (не только на поле id). Хотелось бы при возникновении ошибки уникальности получить текст (тот, который я вижу, например в pgAdmin). Дальше я бы с ним сделал что мне нужно. Есть такая возможность? PS. Постгрес только осваиваю, пытаюсь мыслить аналогчно с ораклом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 11:16 |
|
||
|
plpgsql. Как получить текст ошибки.
|
|||
|---|---|---|---|
|
#18+
http://www.postgresql.org/docs/8.1/interactive/plpgsql-porting.html Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 21:39 |
|
||
|
plpgsql. Как получить текст ошибки.
|
|||
|---|---|---|---|
|
#18+
DeWiLhttp://www.postgresql.org/docs/8.1/interactive/plpgsql-porting.html Код: plaintext 1. 2. 3. 4. 5. 6. Спасибо большое. Но я так и не нашел как получить текст ошибки . К примеру, выполняя в pgAdmin следующий код Код: plaintext Код: plaintext PS. За ссылку отдельное спасибо. Но я не нашел, в каком разделе это может быть. В указанном - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 00:36 |
|
||
|
plpgsql. Как получить текст ошибки.
|
|||
|---|---|---|---|
|
#18+
насколько я знаю в plpgsql этого нету.. попробуй поискать в других встроеных языках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 10:32 |
|
||
|
plpgsql. Как получить текст ошибки.
|
|||
|---|---|---|---|
|
#18+
wbearнасколько я знаю в plpgsql этого нету.. попробуй поискать в других встроеных языках. Спасибо. Тогда попробую переформулировать вопрос - есть ли возможность определить, что сломалось? Т.е. какой уникальный индекс стрельнул или сразу поле таблицы определить... Хочется же пользователю сказать что-то осмысленное, а не "хде-то тут вы ввели что-то, что уже есть в базе" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 11:18 |
|
||
|
plpgsql. Как получить текст ошибки.
|
|||
|---|---|---|---|
|
#18+
ну навскидку в голову пришла такая технология. select into rec * from ( select field1 = 'my_val1' as check_f_1,....,fieldN = 'my_valN' as check_f_N from insert_table ) as x where x.check_f_1 or ... or x.check_f_N; -- все уникальные поля if rec.check_f_1 then return кто-то до вас уже ввел такое же значерие в поле "адекватное имя поля field1; end; ... if rec.check_f_N then return кто-то до вас уже ввел такое же значерие в поле "адекватное имя поля fieldN; end; insert ... into insert_table (...) values (...) return 'OK'; вобщем вместо,field1 = 'my_val1' может быть любое другое логическое выражение .. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 14:23 |
|
||
|
plpgsql. Как получить текст ошибки.
|
|||
|---|---|---|---|
|
#18+
или тебе же всеравно..надо обрабатывать результат выполнения инсерта(втавился не вставился) снаружи(c php perl).. там и текст ошибки обрабатывай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 14:26 |
|
||
|
plpgsql. Как получить текст ошибки.
|
|||
|---|---|---|---|
|
#18+
wbearили тебе же всеравно..надо обрабатывать результат выполнения инсерта(втавился не вставился) снаружи(c php perl).. там и текст ошибки обрабатывай. Так и придется. Хотел сделать законченную функцию, которая бы возвращала код (мой) ошибки, а не клиент бы ловил ошибку и разбирал ее. Эх... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2006, 14:36 |
|
||
|
plpgsql. Как получить текст ошибки.
|
|||
|---|---|---|---|
|
#18+
wbearнасколько я знаю в plpgsql этого нету.. попробуй поискать в других встроеных языках. SQLERRM - вроде то что надо (только в 8.1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 03:10 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=320&tid=2006363]: |
0ms |
get settings: |
5ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
22ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 287ms |

| 0 / 0 |
