2011-10-09 65 views
1
CREATE VIEW [dbo].[MyView] ([ID],[VisitDate],[StartDate] ,[EndDate]) 
WITH SCHEMABINDING 

    AS 
    SELECT  id, VisitDate,dateadd(dd,-10,VisitDate)persisted, 
     dateadd(dd,10,VisitDate)persisted 
    FROM   dbo.Visits 

我有ID的非聚集索引和VisitDate.I wantd知道,如果计算列的起始日期和结束日期是坚持还是当视图被引用视图中的计算列是否持久?

编辑计算运行时间:如果我有什么ID和VisitDate上的唯一聚集索引。在这种情况下,这些列将会持续吗?

回答

3

在您看来,这些值是在运行时计算的。在这里,“持久”一词被视为列名,而不是特殊关键字。

如果要创建持久化的计算列,则需要在CREATE TABLE语句中或作为UPDATE TABLE语句作为表定义的一部分执行此操作。你也可以考虑使用索引视图。

详情请参见文档:

+1

怎么会有两列命名的坚持? –

+0

@HemalPandya:那是**不是**列的**名称** - 它只是列上的一个属性!您可以拥有任意数量的计算列(具有单独的名称),它们是持久的 –

+0

@Hemal - 通常会产生一个错误,因为列名在Views中必须是唯一的,但在这种情况下,OP会在列查看定义'[ID],[VisitDate],[StartDate],[EndDate]',所以这个被忽略。 –