Sql server 计算列'';在表';中';无法持久化,因为列不确定?
我有以下功能Sql server 计算列'';在表';中';无法持久化,因为列不确定?,sql-server,Sql Server,我有以下功能 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; 有错误的 味精4936,16级,状态1,第50行 无法持久化表“test”中的计算列“C”,
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;
有错误的
味精4936,16级,状态1,第50行
无法持久化表“test”中的计算列“C”,因为该列不确定
函数必须使用提示进行修饰,否则SQL Server将跳过确定性验证(性能优化),并将该默认结果视为不确定性。正如Elaskanator所述,您应该在函数定义处添加带有SCHEMABINDING的
,如下所示:
alter FUNCTION [dbo].[Valid](@c char(9))
RETURNS BIT WITH SCHEMABINDING
as
begin
DECLARE @sum int = 0;
return 0
END
create table test(A char(10))
alter table test add C AS dbo.Valid(A) persisted;
更多信息: