Executar gatilho após transação, não em cada linha - PostgreSQL 9.4

Eu tenho esse gatilho para garantir que a soma total de todos os votos não ultrapasse 100:

CREATE FUNCTION limit_votes() RETURNS TRIGGER AS $limit_votes$
    DECLARE
        votes_total int;
    BEGIN
        votes_total := NEW.vote + (SELECT SUM(vote) FROM cars WHERE portfolio_id = NEW.portfolio_id AND car != NEW.car);
        IF votes_total > 100 THEN
            RAISE EXCEPTION 'votes_limit_exceeded';
        END IF;
        RETURN NEW;
    END;
$limit_votes$ LANGUAGE plpgsql;
CREATE TRIGGER limit_votes BEFORE INSERT OR UPDATE ON cars FOR EACH ROW EXECUTE PROCEDURE limit_votes();

Deve-se mencionar que um "voto" pode ser atualizado, portanto, não são apenas INSERTs. É aqui que ocorre o meu problema, pois um usuário pode alterar os votos entre os carros e, em seguida, o gatilho é emitido, pois uma atualização em uma única linha pode exceder o limite de 100, antes que as outras atualizações diminuam os outros votos.

Espero que faça sentido.

Gostaria que o gatilho fosse chamado APÓS um COMEÇO ... COMPROMETIMENTO, para que eu possa atualizar várias linhas antes de verificar se tudo está em ordem - mas também crie uma exceção e não salve o resultado se um usuário tentar atualizar os votos para mais de 100