På grund af den deklarative karakter af SQL kan databasemotoren må tag dig den frihed at evaluere dele af en SQL-sætning i den rækkefølge, den finder passende (så længe det ikke påvirker semantikken). Dit forslag om at GETUTCDATE()
kan være cachelagret, er plausibel.
Jeg ved, at dette ikke besvarer dit spørgsmål. Men uanset implementeringen af GETUTCDATE i SQL2012, kan den meget vel ændre sig i en fremtidig version. Så undgå at stole på det, ellers kan fremtidige opgraderinger blive en reel smerte. Implementer din logik på en måde, der ikke er afhængig af nogen antagelser vedrørende evalueringsrækkefølge.
I dit specifikke tilfælde ser jeg et par mulige løsninger.
- Hvis du ikke har noget problem med
OwningStatuses
har en tid lidt senere endUserStatusesHistory
, så hjælper det måske allerede, hvis du sender det tredje trin til SQL Server som en separat batch. - Skift trin 2 og 3; og lad udløserforespørgslen
OwningStatuses
i stedet for at finde på sin egen dato. - Stop med at bruge triggere; der er mere end én grund til at overveje dette.