Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server 2012:DATETIME несъответствия между вмъквания и тригери

Поради декларативния характер на SQL, машината на базата данни може поемете свободата да оценявате части от SQL оператор във всеки ред, който сметнете за подходящ (стига да не засяга семантиката). Вашето предложение за GETUTCDATE() може да се кешира, е правдоподобно.

Знам, че това не отговаря на въпроса ви. Но каквото и да е изпълнението на GETUTCDATE в SQL2012, то може да се промени в бъдеща версия. Така че избягвайте да разчитате на него, или бъдещите надстройки могат да се превърнат в истинска болка. Приложете логиката си по начин, който не разчита на никакви предположения относно реда на оценяване.

Във вашия конкретен случай виждам няколко възможни решения.

  1. Ако нямате проблем с OwningStatuses имам време малко по-късно отколкото UserStatusesHistory , тогава вече може да помогне, ако изпратите третата стъпка на SQL Server като отделен пакет.
  2. Размяна на стъпки 2 и 3; и оставете тригера да поиска OwningStatuses вместо да измисли своя собствена дата.
  3. Спрете да използвате тригери; има повече от една причина да обмислим това.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какви биха могли да бъдат добри начини за внедряване на ASP.Net уеб приложения?

  2. Изпълнение на съхранена процедура от cmd.exe?

  3. Предимства на производителността на SQL Server 2016 Enterprise Edition

  4. SQL израз за избор на група, съдържаща целия набор от стойности

  5. Как да заснема/кодирам специален символ за SQL Server в приложението Java?