top of page

Coluna calculada ou computada

O SQL Server permite a criação de colunas calculadas ou computadas.

Ok, mas o que é, como criar e fazer o uso de uma coluna calculada?

Colunas calculadas são colunas preenchidas pelo SQL Server com um calculo dinâmico de uma expressão que pode, ou não, referenciar outras colunas da mesma tabela.

Vamos ver um exemplo:

A coluna calculada pode ser criada junto com a tabela ou depois, como qualquer coluna. O que muda é sua declaração: omitimos o datatype da coluna e acrescentamos AS e a expressão que define o valor da coluna.

Bom, acho que é bem claro nesse ponto que não é possível definir valores para estas colunas usando Insert, Update ou Merge.

E como fica a inclusão de registros?

Observe que não foi necessário declarar a lista de colunas no INSERT. O SQL Server entende que NomeCompleto não é informado pelo usuário, então nem espera que seu valor seja passado.

Se você tentar fazer um INSERT ou UPDATE e informar o valor da coluna calculada, o SQL Server não ficará feliz e retornará mensagens de erro:

Como a coluna NomeCompleto foi criada sem a cláusula PERSISTED, significa que ela não existe fisicamente na tabela. Essa coluna só é "criada e preenchida" quando executamos um SELECT na tabela. Por isso, procure utilizar validações na tabela, como triggers e contraints, para garantir que as colunas usadas no cálculo serão preenchidas corretamente. E também utilize expressões como ISNULL(), COALESCE(), etc. na declaração da coluna, para evitar erros ao calcular o valor da coluna. Se a expressão resultar em erro em alguma das linhas do retorno da consulta, a consulta é imediatamente encerrado e um erro é informado.

A cláusula PERSISTED

O cálculo da expressão de uma coluna calculada pode causar um impacto significativo no desempenho das consultas da tabela, principalmente se a expressão realizar operações complexas do ponto de vista computacional. A cláusula PERSISTED pode evitar a perda de desempenho da consulta, já que o uso desta cláusula faz o SQL Server criar e armazenar fisicamente o valor da coluna quando o registro é incluído ou alterado. Ou seja, o cálculo da coluna só ocorre na manutenção da tabela, e não durante as consultas. E, como agora a coluna existe fisicamente, podemos utilizá-la como chave estrangeira ou chave de índice. Mas lembre-se, para utilizar esta propriedade, a expressão que define o valor da coluna deve ser determinística. As funções determinísticas sempre retornam o mesmo resultado quando são chamadas com o uso de um conjunto específico de valores de entrada e quando lhes é dado o mesmo estado do banco de dados. As funções não determinísticas podem retornar resultados diferentes cada vez que são chamadas com um conjunto específico de valores de entrada, mesmo se o estado do banco de dados que elas acessam permaneça o mesmo.

 
Posts Em Destaque
Posts Recentes
Arquivo
Procurar por tags
bottom of page