遇到SQL Server Computed Column问题

时间:2018-03-05 16:48:04

标签: sql sql-server azure-sql-database

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

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

  

计算表{name}在表格' myTable'无法持久化,因为该列是非确定性的。

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

1 个答案:

答案 0 :(得分:1)

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

  

选择哈希字节(' MD5',   转换(VARCHAR(200),(CONVERT(VARCHAR(10),时间戳,126)+'   ' + CONVERT(VARCHAR(24),datestamp,114)),2))来自DateStamp的事件   =' 2016-06-30 12:19:35.257961'