sql-server - GetDate() 是否会针对事务中循环内的每次迭代进行重新评估?

标签 sql-server tsql getdate

我有一个场景,我在一个事务中循环遍历一个结果集,我需要在一个表中插入一个唯一的日期时间值,用于通过结果集的每次迭代 - 每次都会重新计算 GetDate() 还是只计算它第一次然后在循环中的每次迭代都相同?

我的伪代码如下:

BEGIN TRANSACTION
GO

DECLARE @ID INT 
DECLARE @table TABLE (/* Columns */) 

WHILE (SELECT COUNT(*) FROM @table WHERE PROCESSED = 0) > 0
      BEGIN

            SELECT TOP 1 @ID = ID FROM @table WHERE PROCESSED = 0 

            -- INSERT GetDate() into child table at this point. 
            -- Will GetDate() be re-evaluated each time? 

            UPDATE @table SET PROCESSED = 1 WHERE ID = @ID 

      END

END TRANSACTION
GO

提前致谢!

最佳答案

是的。

如果您想避免重新计算它,请将其值存储在循环之前的变量中,然后插入该变量。

关于sql-server - GetDate() 是否会针对事务中循环内的每次迭代进行重新评估?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1847720/

相关文章:

sql - 如何将这两个表连接到同一个 Sql 结果中

java - 获取日期并显示在标签中?我如何将其转换为字符串(日期)

php - 如何在没有静态 IP 的情况下远程访问本地 Web 或数据库服务器

r - 使用 sf::st_write() 将空间数据从 R 写入 MS SQL Server

sql - UPDATE 命令 SET @return = [int_a] = [int_a] + auto_increment WHERE <子句​​>

c# - 在 Windows 窗体应用程序中处理连接字符串的最佳方法是什么?

SQL Server : Return uniqueidentifier from stored procedure

sql - 从表值函数返回表并在临时表中设置该值

java-8 - 从 ResultSet 获取日期以与 java.time 类一起使用

sql - SQL Server 2012 中某些表的 DEFAULT 约束中的 GETDATE