På grund av SQLs deklarativa karaktär kan databasmotorn ta dig friheten att utvärdera delar av en SQL-sats i vilken ordning som helst (så länge det inte påverkar semantiken). Ditt förslag att GETUTCDATE()
kan vara cachad, är rimlig.
Jag vet att detta inte svarar på din fråga. Men oavsett implementeringen av GETUTCDATE i SQL2012, kan det mycket väl ändras i en framtida version. Så undvik att lita på det, eftersom framtida uppgraderingar kan bli en verklig smärta. Implementera din logik på ett sätt som inte förlitar sig på några antaganden om utvärderingsordning.
I ditt specifika fall ser jag några möjliga lösningar.
- Om du inte har några problem med
OwningStatuses
ha en tid lite senare änUserStatusesHistory
, då kanske det redan hjälper om du skickar det tredje steget till SQL Server som en separat batch. - Byt steg 2 och 3; och låt utlösningsfrågan
OwningStatuses
istället för att hitta på ett eget datum. - Sluta använda triggers; det finns mer än en anledning att överväga detta.