如何检查计算列是否已持久化?

6
如何检查计算列是否持久化?(MS SQL Server)

有些相关,但不是直接相关。好的阅读材料:https://dev59.com/H3NA5IYBdhLWcg3wjOpS - Saurabh Gokhale
2个回答

11

计算列属性可以在sys.computed_columns中找到。

select * from sys.computed_columns where is_persisted = 1

is_persisted = 1 表示已持久化的列,为0则没有持久化

可以通过 object_id 将其与 sys.tables 关联,例如:

select t.name, c.name
from sys.tables t
inner join sys.computed_columns c on c.object_id = t.object_id
where c.is_persisted = 1

并将您的where语句更改为包括适合您场景的表名/字段名。


0

死灵法师。
如果你需要所有列,或者只需要计算列,或者只需要持久化的计算列,你可以使用一个脚本来完成:

SELECT * 
FROM sys.columns AS sysc

LEFT JOIN sys.computed_columns AS syscc 
    ON syscc.object_id = sysc.object_id 
    AND syscc.name = sysc.name 

WHERE (1=1) 
AND sysc.is_computed = 1 -- optional 
AND is_persisted = 1  -- optional 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接