Ze względu na deklaratywny charakter SQL silnik bazy danych może pozwól sobie na ocenę części instrukcji SQL w dowolnej kolejności, jaką uzna za stosowną (o ile nie wpływa to na semantykę). Twoja sugestia, aby GETUTCDATE()
może być buforowany, jest prawdopodobny.
Wiem, że to nie odpowiada na twoje pytanie. Ale niezależnie od implementacji GETUTCDATE w SQL2012, może się to zmienić w przyszłej wersji. Unikaj więc polegania na nim, ponieważ przyszłe aktualizacje mogą stać się prawdziwym bólem. Zaimplementuj swoją logikę w sposób, który nie opiera się na żadnych założeniach dotyczących kolejności oceny.
W Twoim konkretnym przypadku widzę kilka możliwych rozwiązań.
- Jeśli nie masz problemu z
OwningStatuses
trochę czasu później niżUserStatusesHistory
, to może już pomóc, jeśli wyślesz trzeci krok do SQL Server jako osobną partię. - Zamień kroki 2 i 3; i niech zapytanie wyzwalacza
OwningStatuses
zamiast wymyślać własną randkę. - Przestań używać wyzwalaczy; jest więcej niż jeden powód, aby to rozważyć.