En raison de la nature déclarative de SQL, le moteur de base de données pourrait prendre la liberté d'évaluer des parties d'une instruction SQL dans l'ordre qu'il juge approprié (tant que cela n'affecte pas la sémantique). Votre suggestion que GETUTCDATE()
pourrait être mis en cache, est plausible.
Je sais que cela ne répond pas à votre question. Mais quelle que soit l'implémentation de GETUTCDATE dans SQL2012, cela pourrait bien changer dans une future version. Évitez donc de vous y fier, sinon les futures mises à niveau pourraient devenir un véritable casse-tête. Implémentez votre logique d'une manière qui ne repose sur aucune hypothèse concernant l'ordre d'évaluation.
Dans votre cas spécifique, je vois quelques solutions possibles.
- Si vous n'avez aucun problème avec
OwningStatuses
avoir un moment un peu plus tard queUserStatusesHistory
, cela peut déjà aider si vous envoyez la troisième étape à SQL Server en tant que lot séparé. - Échangez les étapes 2 et 3 ; et laissez le déclencheur interroger
OwningStatuses
au lieu d'inventer sa propre date. - Arrêtez d'utiliser des déclencheurs ; il y a plus d'une raison d'envisager cela.