表格中的计算列“...”无法持久化,因为该列是不确定性的。

3

我有以下函数。

create FUNCTION [dbo].[Valid](@c char(9))
RETURNs bit
as
begin
    DECLARE @sum int = 0;
    return 0 
end

"最初的回答":并且以下SQL语句
create table test(A char(10))
alter table test add C as dbo.Valid(A) persisted;

错误信息:

Msg 4936,级别 16,状态 1,第 50 行

表 'test' 中的计算列 'C' 无法持久化,因为该列是非确定性的。

最初的回答:

这个错误是因为 'C' 列是一个非确定性列,不能被持久化。

2个回答

5

必须使用WITH SCHEMABINDING提示符装饰函数,否则SQL Server会跳过确定性验证(一种性能优化),并将默认结果视为不确定性。


3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接