Como recuperar um valor gerado por trigger após a inserção?

Galera boa tarde, estou com um problema e gostaria de uma ajuda.
Tenho uma classe (Contrato), cujo campo código é gerado por um trigger. Esse campo não é a chave primária da tabela. Após o insert, eu tenho que enviar um email notificando a criação do contrato recém criado.
Após o insert, os dados estão perfeitos na tabela, inclusive o código, mas na classe o código fica zerado.
Atualmente, para envio do contrato, estou fazendo uma consulta ao contrato recém criado para obter o código gerado, mas isso é uma senhora gambiarra.
Gostaria de qq ajuda.

Na minha opinião, a única coisa que pode ser chamada de gambiarra nesse processo é a geração desse código via trigger.

A partir do momento que a informação é gerada pelo BD, é natural que tenha que ir ao BD para recupera-la.

Eu aconselharia gerar esse código na aplicação, se possível.
Se não for possível, melhor continuar fazendo isso mesmo.

Esse código é gerado por trigger pelo seguinte motivo:
O código do contrato deve ser único e sequencial…e duas ou mais pessoas podem gerar contratos simultâmeanente…
Foi a solução que eu julguei melhor…
Como eu resolveria esse problema na aplicação?