Ao criar uma coluna computada no SQL Server, você tem a opção de marcá-la como “persistente”. Uma coluna computada persistente é aquela que está fisicamente armazenada na tabela. Se você não especificar que ela é persistente, o valor da coluna será calculado toda vez que você executar uma consulta nela.
Você pode consultar o
sys.computed_columns
visualização do catálogo do sistema para descobrir se uma coluna computada está marcada como persistente. Exemplo 1 – Verificando uma coluna computada
Aqui está um exemplo que eu executei no meu ambiente de teste. Nesse caso, estou verificando uma coluna computada chamada
TotalValue
. SELECT is_persisted FROM sys.computed_columns WHERE name = 'TotalValue';
Resultado:
+----------------+ | is_persisted | |----------------| | 1 | +----------------+
Neste caso, a coluna é persistiu.
Caso você tenha várias colunas computadas com o mesmo nome, você também pode adicionar o nome da tabela ao
WHERE
cláusula:SELECT is_persisted FROM sys.computed_columns WHERE name = 'TotalValue' AND OBJECT_NAME(object_id) = 'Products';
Exemplo 2 – Retornar todas as colunas computadas
Neste exemplo eu retorno todas as colunas computadas, junto com seu
is_persisted
valores. SELECT OBJECT_NAME(object_id) AS [Table], name AS [Computed Column], is_persisted FROM sys.computed_columns;
Resultado:
+----------+-------------------+----------------+ | Table | Computed Column | is_persisted | |----------+-------------------+----------------| | Person | FullName | 0 | | Products | TotalValue | 1 | +----------+-------------------+----------------+
Exemplo 3 – Incluir o esquema
Neste exemplo eu junto com o
sys.objects
view para incluir o esquema nos resultados. SELECT SCHEMA_NAME(o.schema_id) AS [Schema], OBJECT_NAME(cc.object_id) AS [Table], cc.name AS [Computed Column], cc.is_persisted FROM sys.computed_columns cc INNER JOIN sys.objects o ON o.object_id = cc.object_id;
Resultado:
+----------+----------+-------------------+----------------+ | Schema | Table | Computed Column | is_persisted | |----------+----------+-------------------+----------------| | dbo | Person | FullName | 0 | | dbo | Products | TotalValue | 1 | +----------+----------+-------------------+----------------+