Непонятно, что вы имеете в виду, пытаясь выполнить операции с недопустимыми данными.
Если вы получаете исключение в триггере BEFORE
, поскольку выполняете там операцию (скажем,деление на ноль, которое было бы исключено ограничением), тогда триггер и все INSERT
будут прерваны, так же, как если бы ограничение вызвало исключение позже.Поэтому не о чем беспокоиться.
С другой стороны, если вы хотите, чтобы ограничения проверялись перед выполнением проверок, просто выполните проверки в триггере AFTER
.Выдача исключения также прервет вставку.
Если оба сработают, перейдите к триггеру BEFORE
.Если вы выбросите исключение до того, как строка будет вставлена, вы точно не создадите мертвый кортеж.