|
|
|
Возврат ошибки из триггера?
|
|||
|---|---|---|---|
|
#18+
Добрый день, коллеги! Как можно вернуть ошибку из триггера? Т.е., к примеру, если в before insert триггере будет выявлено несоответствие данных, которое не позволяет добавить эту запись в таблицу, то я завершаю выполнение триггера через LEAVE. Но, кроме этого, нужно как то дать понять клиентскому приложению из-за чего запись не была добавлена. Идеальным решением был-бы возврат ошибки через систему регистрации ошибок самого mysql-сервера, что бы можно было их получить штатно так, как обычные ошибки при вставке/апдейте/удалении, которые генерит сервер. Есть у кого какие мысли по этому поводу? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 11:51:26 |
|
||
|
Возврат ошибки из триггера?
|
|||
|---|---|---|---|
|
#18+
Можно по старинке - заведомо ошибочной операцией, например, делением на 0. Можно по-новому - SIGNAL . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 12:00:04 |
|
||
|
Возврат ошибки из триггера?
|
|||
|---|---|---|---|
|
#18+
miksoftМожно по старинке - заведомо ошибочной операцией, например, делением на 0.Увы! Зависит, вероятно, от настроек (или сборки) сервера - оба моих сервера на деление на ноль возвращают результат NULL, без каких-либо ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 14:03:26 |
|
||
|
Возврат ошибки из триггера?
|
|||
|---|---|---|---|
|
#18+
В результате экспериментов нашел, практически полностью устраивающее меня, решение! Что-то типа: Код: sql 1. 2. 3. В результате, из-за отсутствия в рабочих таблицах указанного поля, выполнение триггера (и, соответственно, операция добавления/изменения записи) прерывается по ошибке и сервер возвращает клиенту ошибку типа "Не найдена колонка 'Incorrect email address!'". В принципе, можно оставить эту ошибку без обработки, а можно и вырезать из нее текст нашего сообщения! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 14:16:08 |
|
||
|
Возврат ошибки из триггера?
|
|||
|---|---|---|---|
|
#18+
OlegROA, Можно и так. В доке по SIGNAL-у предлагается подобный вариант: SIGNAL SyntaxWithout SIGNAL, it is necessary to resort to workarounds such as deliberately referring to a nonexistent table to cause a routine to return an error. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 14:28:35 |
|
||
|
Возврат ошибки из триггера?
|
|||
|---|---|---|---|
|
#18+
miksoftМожно по-новому - SIGNAL .Спасибо за подсказку!!! Получилось вообще идеальное решение - простое и действенное: Код: sql 1. 2. 3. 4. В результате, выполнение триггера и самой операции добавления/изменения записи прерывается и на клиент возвращается стандартная ошибка sql-сервера с моим кодом '10001' и моим-же сообщением 'Incorrect e-mail address!'!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2014, 14:33:26 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=192&tid=1835398]: |
0ms |
get settings: |
5ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
| others: | 193ms |
| total: | 310ms |

| 0 / 0 |
