我想在我的单个查询中使用getdate()函数3-4次进行验证检查。但是我希望,每次我期望在一个查询执行中获得当前的日期时,在所有3-4个位置上都会得到相同的日期。从技术上讲,计算机速度快到99.9%,在查询的所有地方我都会得到相同的日期时间。但从理论上讲,它可能会导致错误。因此,如何通过调用getdate一次来缓存getdate,并在查询中使用缓存的值。
但是,补充一下,我想在check约束中写这样的语句,所以我不能声明局部变量或任何类似的东西。
发布于 2018-05-05 11:02:04
Server具有运行时常量函数的概念.描述这些问题的最好方法是,执行引擎首先从查询计划中提取函数引用,并在每个查询中执行每个函数一次。
注意,函数引用似乎是基于列的。因此,不同的列可以有不同的值,但是不同的行应该在列中具有相同的值。
这类中最常见的两个函数是getdate()和rand()。具有讽刺意味的是,我发现这对于getdate()是一件好事,但对rand()却是一件坏事(什么样的随机数生成器总是返回相同的值?)
由于某些原因,我找不到运行时常量函数的实际文档。但这里有一些受人尊敬的博客文章解释了这件事:
https://stackoverflow.com/questions/50187207
复制相似问题