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-SQLSe 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