我有一个表,该表具有根据函数(eigenclass
)的结果计算出的字段(Test
),并且我希望使其成为MyFunctionTest
并添加性能改进的索引,例如:
PERSISTED
CREATE TABLE [dbo].[TestTable] (
[Id] [int] IDENTITY(1,1) NOT NULL,
[Foo] [int] NOT NULL,
[Test] AS ([dbo].[MyFunctionTest]([Foo])) PERSISTED,
CONSTRAINT [PK_TestTable] PRIMARY KEY CLUSTERED
(
[Id] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
是:
MyFunctionTest
但是,保存时的sql server 2005显示错误
表'Tmp_TestTable'中的计算列'Test'不能为 之所以持续存在,是因为该列是不确定的。
为什么ALTER FUNCTION [dbo].[MyFunctionTest]
(
@foo int
)
RETURNS int
AS
BEGIN
RETURN @foo * 2
END
不确定?
解决方案
在功能中添加具有SCHEMABINDING 功能
MyFunctionTest