Colunas Computadas

A partir do SQL Server 2000, existe um recurso chamado Colunas Computadas, as mesmas são colunas em tabelas, cujo valor é gerado a partir de outro campos dessa tabela.

A sintaxe basica de criação de uma coluna computada é a seguinte:

CREATE TABLE Aluno(
	Nome VARCHAR(100) NOT NULL, 
	Nota1 DECIMAL(4,2) NOT NULL, 
	Nota2 DECIMAL(4,2) NOT NULL,
	Media AS (Nota1+Nota2)/2
	)

Existem algumas peculiaridades para esses tipos de colunas:

– Não é possivel realizar inserção ou alteração em colunas computadas;

– Uma coluna computada não pode ser utilizada em constraints Default ou FK.

Uma coluna computada pode ser o campo chave de um indice, contanto que essa coluna esteja com a configuração PERSISTED como é exibido abaixo:

CREATE TABLE Aluno(
	Nome VARCHAR(100) NOT NULL, 
	Nota1 DECIMAL(4,2) NOT NULL, 
	Nota2 DECIMAL(4,2) NOT NULL,
	Media AS (Nota1+Nota2)/2 PERSISTED
	)

Essa configuração PERSISTED faz com que a quando calculado o valor desta coluna, o SQL grave este valor nesta tabela, e o mesmo só sera alterado caso ocorra alguma alteração nos campos que compoem o valor desta coluna (No exemplo, Nota1 e Nota2)

Não é possivel realiazar alteração na string que gera o valor de uma coluna computada, portanto, é necessario que se delete essa coluna atravez do comando:

ALTER TABLE Aluno DROP COLUMN Media

E crie uma nova coluna atravez do comando:

ALTER TABLE Aluno ADD Media AS (Nota1+Nota2)/4

Como não existe a possibilidade de alteração, apenas a de deleção e recriação, uma boa pratica seria ja manter as colunas computadas como ultimas colunas na criação de uma tabela.

Anúncios
Post a comment or leave a trackback: Trackback URL.

Comentários

Trackbacks

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: