Поради декларативния характер на SQL, машината на базата данни може поемете свободата да оценявате части от SQL оператор във всеки ред, който сметнете за подходящ (стига да не засяга семантиката). Вашето предложение за GETUTCDATE()
може да се кешира, е правдоподобно.
Знам, че това не отговаря на въпроса ви. Но каквото и да е изпълнението на GETUTCDATE в SQL2012, то може да се промени в бъдеща версия. Така че избягвайте да разчитате на него, или бъдещите надстройки могат да се превърнат в истинска болка. Приложете логиката си по начин, който не разчита на никакви предположения относно реда на оценяване.
Във вашия конкретен случай виждам няколко възможни решения.
- Ако нямате проблем с
OwningStatuses
имам време малко по-късно отколкотоUserStatusesHistory
, тогава вече може да помогне, ако изпратите третата стъпка на SQL Server като отделен пакет. - Размяна на стъпки 2 и 3; и оставете тригера да поиска
OwningStatuses
вместо да измисли своя собствена дата. - Спрете да използвате тригери; има повече от една причина да обмислим това.