Vanwege het declaratieve karakter van SQL, kan de database-engine mogelijk neem de vrijheid om delen van een SQL-instructie te evalueren in elke gewenste volgorde (zolang het geen invloed heeft op de semantiek). Uw suggestie dat GETUTCDATE()
in de cache kan worden opgeslagen, is aannemelijk.
Ik weet dat dit geen antwoord geeft op je vraag. Maar wat de implementatie van GETUTCDATE in SQL2012 ook is, het zou in een toekomstige versie kunnen veranderen. Dus vermijd erop te vertrouwen, anders kunnen toekomstige upgrades een echte pijn worden. Implementeer uw logica op een manier die niet afhankelijk is van aannames met betrekking tot de evaluatievolgorde.
In jouw specifieke geval zie ik een paar mogelijke oplossingen.
- Als je geen probleem hebt met
OwningStatuses
een beetje tijd hebben later danUserStatusesHistory
, dan kan het al helpen als je de derde stap als een aparte batch naar SQL Server stuurt. - Verwissel stap 2 en 3; en laat de triggerquery
OwningStatuses
in plaats van zijn eigen datum te verzinnen. - Stop met het gebruik van triggers; er is meer dan één reden om dit te overwegen.