Страница 1 из 1

Подскажите по exception

Добавлено: 06 авг 2008, 11:32
Pavel_ch
Вопрос такой.
Вот скажем добавляется в таблицу в одной транзакции 40 записей. В триггере Before Insert на эту таблицу каждая запись проверяется на некое условие и если это условие не выполняется, то вызывается исключение:

Код: Выделить всё

if (real_oper_group <> call_oper_gr) then exception e_oper_incorrect;
Если возникнет исключение в БД, то соответственно приложение тоже отреагирует на него исключением и запишет данные с ошибкой уже в другую таблицу. А вот на сервере с записью на которой ошибка возникла что будет? Триггер продолжит выполнение после exception или остановится? Insert будет засчитан?
И потом если по окончании обработки всех 40 записей будет сделан commit, где ошибочные данные окажутся - в обеих таблицах?

FB 2.1.1

Добавлено: 06 авг 2008, 12:18
WildSery
Стоит почитать вот эту статью.

Добавлено: 06 авг 2008, 13:20
Pavel_ch
Спасибо за ссылку.
Если я правильно понял статью, то в моём случае "сервер сам откатит операцию INSERT при возникновении в ней исключения"

Добавлено: 06 авг 2008, 13:29
kdv
статью можно было и не читать. операция, которая завершилась ошибкой, естественно не меняет данные, т.к. произошла ошибка, не так-ли?
а уж чем завершать транзакцию, коммитом или роллбэком, зависит от наличия или отсутствия взаимосвязей между отдельными операторами SQL в этой транзакции.