Firebird: текущий запрос атомарно не выполняется, транзакция остается активной и позволяет выполнять команды дальше.
Postgresql: транзакция становится некошерной и в ней более ни одна команда не выполняется.
Теоретически, против косяков в клиентском коде типа отсутствия обработки ошибок, второй вариант кажется более разумным.