Vzhledem k deklarativní povaze SQL by databázový stroj mohl dovolte si vyhodnotit části příkazu SQL v libovolném pořadí, které uzná za vhodné (pokud to neovlivňuje sémantiku). Váš návrh, že GETUTCDATE()
může být uložen do mezipaměti, je věrohodný.
Vím, že to neodpovídá na vaši otázku. Bez ohledu na implementaci GETUTCDATE v SQL2012 se však může v budoucí verzi změnit. Takže se na to nespoléhejte, protože budoucí upgrady se mohou stát skutečnou bolestí. Implementujte svou logiku způsobem, který se nespoléhá na žádné předpoklady týkající se pořadí hodnocení.
Ve vašem konkrétním případě vidím několik možných řešení.
- Pokud nemáte problém s
OwningStatuses
mít čas o něco později nežUserStatusesHistory
, pak už může pomoci, když odešlete třetí krok na SQL Server jako samostatnou dávku. - Prohoďte kroky 2 a 3; a nechte spouštěcí dotaz
OwningStatuses
místo vymýšlení vlastního data. - Přestaňte používat spouštěče; existuje více než jeden důvod, proč to zvážit.