如何使用getdate()使用计算列规范来保持日期时间值?

时间:2011-08-29 19:02:27

标签: sql-server

有没有人知道是否有办法实现与datetime列相同的影响,默认绑定为getdate()与计算列?

我尝试将公式设置为getdate()并持续到Yes但我收到错误

Computed column 'InsertDateTime' in table 'Tmp_Table' cannot be persisted because the column is non-deterministic.

1 个答案:

答案 0 :(得分:6)

忘记“计算列”并将其设为常规非空列,默认为GETDATE(),或使用INSTEAD OF UPDATE/INSERT触发器进行设置。

您不能使计算列使用不断返回不同值的函数(基于相同的参数值),它必须每次返回相同的值(基于相同的参数值)。阅读:Deterministic and Nondeterministic Functions

  

所有功能都是确定性的或不确定的:

     
      
  • 确定性函数始终会始终返回相同的结果   使用一组特定的输入值调用它们。
  •   
  • 非确定性功能每次都可能返回不同的结果   使用一组特定的输入值调用它们。
  •   
     

函数是确定性的还是非确定性的称为   函数的确定性

     

例如,DATEADD内置函数是确定性的,因为它   始终为任何给定的参数值集返回相同的结果   因为它的三个参数。 GETDATE不是确定性的,因为它是   始终使用相同的参数调用,但返回的值   每次执行时都会更改。