Estou extremamente novo no PostgreSQL, mas um dos exemplos na documentação do PostgreSQL para gatilhos / programação do lado do servidor parece fazer exatamente o que você está procurando.
Consulte:http://www.postgresql.org/docs/9.2 /static/trigger-example.html
Trecho da página:"Então o gatilho age como uma restrição não nula, mas não aborta a transação. "