如何解决此错误?
我正在尝试添加一个带有检查约束的列,即使我保留了列,我也会收到此错误。
ALTER TABLE TABLE1
ADD AGE AS DATEDIFF(YEAR,DateOFBirth,GETDATE()) PERSISTED
CONSTRAINT CHCK_TABLE1_AGE
CHECK (AGE>0 AND AGE<105)
错误:
表'TABLE1'中的计算列'AGE'无法保留,因为 该列是不确定的。
答案 0 :(得分:0)
是的,该列不具有确定性,因此无法编制索引。
AGE
列值每天都会更改(甚至是小时或秒),因此无法在其上创建索引。
我认为解决方案是使用AS
不会自动计算此列,而是通过触发器或外部进程每天(夜晚)重新计算此列。
这样,您每天都有正确的年龄值,并且您还有快速搜索索引。