遇到SQL Server Computed Column问题

问题描述 投票:1回答:1

我正在使用Javascript后端开发人员开发Web应用程序。我们认为将计算列添加到其中一个表中以有效地充当每个“事件”的唯一ID会很有用。

我已经尝试将HASHBYTES应用于时间戳和用户ID字段的串联,这在Select语句中运行良好。但是,当使用Persisted(计算)列更改我的表时,我收到错误:

表'myTable'中的计算列{name}无法保留,因为该列是非确定性的。

我不太清楚这个错误告诉我的是什么。它与我在计算中使用datetimeoffset字段有关吗?或者我是否尝试以不正确的方式使用hashbytes?有没有更好的方法来计算和存储UUID?

sql sql-server azure-sql-database
1个回答
1
投票

您是否依赖隐式转换来生成计算列?尝试使用CONVERT函数。散列时间戳列不是确定性的,如果使用CONVERT函数可以帮助使其确定性如下所示。

从DateStamp中的事件中选择hashbytes('MD5',convert(varchar(200),(CONVERT(varchar(10),datestamp,126)+''CONVERT(VARCHAR(24),datestamp,114)),2)) ='2016-06-30 12:19:35.257961'

© www.soinside.com 2019 - 2024. All rights reserved.