我正在使用Javascript Backend开发人员开发Web应用程序。我们认为将计算列添加到其中一个表中以有效地充当每个"事件"的唯一ID会很有用。
我尝试将HASHBYTES应用于时间戳和用户ID字段的串联,这在Select语句中运行良好。但是,当使用Persisted(计算)列更改我的表时,我收到错误:
计算表{name}在表格' myTable'无法持久化,因为该列是非确定性的。
我不清楚这个错误告诉我的是什么。它与我在计算中使用datetimeoffset字段有关吗?或者我是否尝试以错误的方式使用hashbytes
?有没有更好的方法来计算和存储UUID?
答案 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'