Verificar a existência de uma coluna no SQL Server

Microsoft SQL Server

Um dos grandes problemas para atualizar uma base de dados através de forma automatizada é com o problema dos campos na base de dados, no SQL Server provemos do utilitário SQL Command que provê acesso ao ao SGDB via linha de comando e nos auxiliar a realizar essa tarefa.

Nos scripts de atualização sempre faço a verificação da existência do campo na base de dados antes de criar o campo, abaixo temos um exemplo de como verificar a existência do campo através de uma consulta a tabela do Sql Server que armazena todas as colunas existentes:

IF NOT EXISTS(SELECT * FROM sys.columns 
              WHERE [name] = N'nomeDaColuna' AND [object_id] = OBJECT_ID(N'nomeDaTabela'))
BEGIN
    ALTER TABLE nomeDaTabela ADD nomeDaColuna INT NOT NULL DEFAULT 0;
END

Outro forma de verificar a existência da coluna é através do comando COL_LENGTH que retorna a quantidade de bytes que o campo utiliza para armazenar os dados.

IF COL_LENGTH('nomeDaTabela', 'nomeDaColuna') IS NULL
BEGIN
     ALTER TABLE nomeDaTabela ADD nomeDaColuna INT NOT NULL DEFAULT 0;
END

Caso a coluna pelo qual foi executada a pesquisa for do tipo VARCHAR(MAX) o resultado do COL_LENGTH será -1.
Observação: Retorna NULL em caso de erro ou se o usuário que estiver executando a query não tiver permissão para exibir o objeto.

Caso desejar adicionar uma descrição na coluna recentemente criada poderemos executar a proc abaixo:

EXEC sp_addextendedproperty 
@name = N'Description', @value = 'Longa descrição da coluna',
@level0type = N'Schema', @level0name = Schema,
@level1type = N'Table',  @level1name = Tabela,
@level2type = N'Column', @level2name = Coluna;
GO

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *