【发布时间】:2011-01-30 23:56:51
【问题描述】:
我正在尝试使用 CASE 表达式创建一个持久计算列:
ALTER TABLE dbo.Calendar ADD PreviousDate AS
case WHEN [Date]>'20100101' THEN [Date]
ELSE NULL
END PERSISTED
MSDN 明确表示 CASE 是确定性的,here
但是,我收到一个错误:
消息 4936,第 16 级,状态 1,第 1 行 计算列“PreviousDate”在 表“日历”无法持久化 因为该列是 非确定性的。
当然,我可以创建一个标量 UDF 并将其明确声明为确定性,但是有没有更简单的方法呢?我已经在获取最新的服务包了。谢谢。
【问题讨论】:
-
老问题,我知道,但是您如何建议在 SQL Server 中“创建标量 UDF 并将其明确声明为确定性”。我听说你可以在 Oracle 中这样做,但我从未在 SQL Server 中看到过这种方法......
标签: sql sql-server sql-server-2008 calculated-columns persisted-column