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 um comentário