Cenário:
Você está trabalhando como SQL Server Developer para um escritório de advocacia. Você criou uma tabela dbo.Customer usando a definição abaixoCREATE TABLE Customer ( CustomerId INT Identity(1, 1) ,FirstName VARCHAR(50) ,LastName VARCHAR(50) ,Age SMALLINT ,PhoneNumber CHAR(9) ,DOB DATE ,Gender CHAR(1) )
Você precisa ter um nome completo que deve consistir em nome e sobrenome. Você não deseja salvar os dados duplicados na tabela adicionando uma nova coluna para o nome completo. Quais são suas opções?
Também dependendo da idade, gostaríamos de adicionar nova coluna chamar IsSenior e marcá-la 1 se acima de 65 senão 0.
Solução:
O SQL Server nos fornece Coluna Computada, que é uma coluna virtual e não armazena dados, a menos que esteja marcada como Persistente. Isso significa que podemos criar uma coluna computada (Nome completo) que usará dados de Nome e Sobrenome. Ao criar a Coluna Computada, não precisamos salvar dados duplicados para a coluna Nome completo.Vamos em frente e criar Colunas Computadas Nome Completo e IsSenior, dependendo de nossos critérios.
CREATE TABLE Customer ( CustomerId INT Identity(1, 1) ,FirstName VARCHAR(50) ,LastName VARCHAR(50) ,Age SMALLINT ,PhoneNumber CHAR(9) ,DOB DATE ,Gender CHAR(1) ,FullName AS FirstName + ' ' + LastName ,IsSenior AS CASE WHEN Age > 65 THEN 1 ELSE 0 END )Concatenamos o nome e o sobrenome para o nome completo e escrevemos a declaração de caso para a coluna de computador IsSenior. Vamos inserir alguns registros.
insert into dbo.Customer(FirstName,LastName,Age) Values('Aamir','Shahzad',66), ('Raza','M',44)
Percebi que não inseri nada para as colunas FullName e IsSenior. Os valores dessas colunas serão calculados quando selecionarmos os dados.
Como adicionar colunas computadas na tabela do SQL Server - Tutorial T-SQL
Se você precisa adicionar Coluna Computada à Tabela de saída, você pode usar a sintaxe abaixo
Alter Table SchemaName.TableName
Add ColumnName AS Logic (como FistName +''+LastName)
Digamos que se queremos adicionar FullName Computer Column à tabela Customer, podemos usar o script abaixo.
Alter table dbo.Customer Add FullName AS FirstName+' '+LastName
Solte a coluna computada da tabela do SQL Server:
A sintaxe para descartar a coluna Computed ou normal é a mesma.
Alter Table SchemaName.TableName
drop Column ColumnName
Digamos se queremos descartar Coluna computada FullName da tabela dbo.Customer. Podemos usar o script abaixo.
Alter table dbo.Customer drop column FullName