sql server 计算列用的自定义函数为什么不能建索引
sql server 计算列用的自定义函数为何不能建索引
我的计算列用到下面这个自定义函数
每次为计算列 建立索引时都提示
此列具有不确定性。我这个函数难道不是确定性函数么?
求高手指点
------解决方案--------------------
不可以,计算列是必须在插入时和插入后该值都为确定的,而你使用函数的情况下,如果插入之后修改函数内容可能造成计算结果的不相同,导致修改前和修改后计算出来的值不一样。
------解决方案--------------------
你这个函数这么简单,直接用CASE WHEN搞定好了
------解决方案--------------------
我的计算列用到下面这个自定义函数
- SQL code
CREATE FUNCTION [dbo].[f_recommendCondition] ( @views INT , @replies INT , @digest TINYINT ) RETURNS INT AS BEGIN DECLARE @returnValue INT ; IF ( @digest IN ( 1, 2, 3, 10 ) AND @views > 99 AND @replies > 9 ) SET @returnValue = 1 ELSE SET @returnValue = 0 RETURN @returnValue ; END
每次为计算列 建立索引时都提示
此列具有不确定性。我这个函数难道不是确定性函数么?
求高手指点
------解决方案--------------------
不可以,计算列是必须在插入时和插入后该值都为确定的,而你使用函数的情况下,如果插入之后修改函数内容可能造成计算结果的不相同,导致修改前和修改后计算出来的值不一样。
------解决方案--------------------
你这个函数这么简单,直接用CASE WHEN搞定好了
------解决方案--------------------