Se você tiver certeza de que a inserção no banco de dados acontecerá apenas no final do seu aplicativo, eu escolheria a primeira opção criando um procedimento e incluindo o
INSERT
declaração em um TRANSACTION
quadra. que garantirá a operação atômica. Mas, caso haja possibilidades de que a inserção no banco de dados possa ocorrer por meio de consulta ad hoc ou por meio de ferramenta ETL de terceiros, você não tem outra opção a não ser ter um gatilho
AFTER INSERT TRIGGER
para realizar a operação de inserção de log (2ª opção), pois não há como chamar o outro INSERT
declaração automática ou explicitamente.