Аз съм изключително нов за PostgreSQL, но един от примерите в документацията на PostgreSQL за тригери / програмиране от страна на сървъра изглежда, че прави точно това, което търсите.
Вижте:http://www.postgresql.org/docs/9.2 /static/trigger-example.html
Фрагмент от страницата:„Така че тригерът действа като не-нулево ограничение, но не прекъсва транзакцията. "