Do bản chất khai báo của SQL, công cụ cơ sở dữ liệu might có quyền tự do đánh giá các phần của câu lệnh SQL theo bất kỳ thứ tự nào mà nó thấy phù hợp (miễn là nó không ảnh hưởng đến ngữ nghĩa). Đề xuất của bạn rằng GETUTCDATE()
có thể được lưu trong bộ nhớ cache, là một điều hợp lý.
Tôi biết điều này không trả lời câu hỏi của bạn. Nhưng bất kể việc triển khai GETUTCDATE trong SQL2012, nó cũng có thể thay đổi trong phiên bản tương lai. Vì vậy, hãy tránh dựa vào nó, nếu không những nâng cấp trong tương lai có thể trở thành một nỗi đau thực sự. Thực hiện logic của bạn theo cách không dựa trên bất kỳ giả định nào liên quan đến thứ tự đánh giá.
Trong trường hợp cụ thể của bạn, tôi thấy một số giải pháp khả thi.
- Nếu bạn không gặp vấn đề gì với
OwningStatuses
có một chút thời gian muộn hơn thanUserStatusesHistory
, thì nó có thể hữu ích nếu bạn gửi bước thứ ba tới SQL Server dưới dạng một lô riêng biệt. - Hoán đổi các bước 2 và 3; và để truy vấn kích hoạt
OwningStatuses
thay vì tự đặt ngày. - Ngừng sử dụng trình kích hoạt; có nhiều lý do để cân nhắc điều này.