Karena sifat deklaratif SQL, mesin database mungkin ambil kebebasan untuk mengevaluasi bagian dari pernyataan SQL dalam urutan apa pun yang dianggap cocok (selama itu tidak memengaruhi semantik). Saran Anda bahwa GETUTCDATE()
mungkin di-cache, adalah hal yang masuk akal.
Saya tahu ini tidak menjawab pertanyaan Anda. Tapi apa pun implementasi GETUTCDATE di SQL2012, itu mungkin berubah di versi mendatang. Jadi hindari mengandalkannya, atau peningkatan di masa mendatang bisa sangat merepotkan. Terapkan logika Anda dengan cara yang tidak bergantung pada asumsi apa pun terkait urutan evaluasi.
Dalam kasus spesifik Anda, saya melihat beberapa kemungkinan solusi.
- Jika Anda tidak memiliki masalah dengan
OwningStatuses
bersenang-senang sebentar nanti dariUserStatusesHistory
, maka mungkin sudah membantu jika Anda mengirim langkah ketiga ke SQL Server sebagai kumpulan terpisah. - Tukar langkah 2 dan 3; dan biarkan kueri pemicu
OwningStatuses
daripada membuat kencannya sendiri. - Berhenti menggunakan pemicu; ada lebih dari satu alasan untuk mempertimbangkan hal ini.