Devido à natureza declarativa do SQL, o mecanismo de banco de dados pode tome a liberdade de avaliar partes de uma instrução SQL na ordem que achar melhor (desde que não afete a semântica). Sua sugestão de que
GETUTCDATE()
pode ser armazenado em cache, é plausível. Eu sei que isso não responde a sua pergunta. Mas qualquer que seja a implementação de GETUTCDATE no SQL2012, isso pode mudar em uma versão futura. Portanto, evite confiar nele, ou atualizações futuras podem se tornar uma verdadeira dor. Implemente sua lógica de uma maneira que não dependa de nenhuma suposição sobre a ordem de avaliação.
No seu caso específico, vejo algumas soluções possíveis.
- Se você não tiver problemas com
OwningStatuses
tendo um tempo um pouco mais tarde do queUserStatusesHistory
, já pode ajudar se você enviar a terceira etapa para o SQL Server como um lote separado. - Troque as etapas 2 e 3; e deixe a consulta de gatilho
OwningStatuses
em vez de inventar sua própria data. - Pare de usar gatilhos; há mais de um motivo para considerar isso.