如何检查计算列是否持久化?(MS SQL Server)
计算列属性可以在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语句更改为包括适合您场景的表名/字段名。
死灵法师。
如果你需要所有列,或者只需要计算列,或者只需要持久化的计算列,你可以使用一个脚本来完成:
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