You are here

[DICA] - Obter o nome de todas as colunas de uma tabela em Sql Server

Tweet me!

Estavamos desenvolvendo aqui na empresa um método para atualização automática dos campos e tabelas no banco de dados, até que chegou o momento de verificarmos se existe no banco de dados uma determinada coluna, caso essa coluna não exista, ela deveria ser criada no banco de dados.

A primeira ideia que pensamos foi de fazer um select na tabela, e percorrer um DataTable comparando os nomes das colunas com a nova coluna, caso não existisse, executava um códio sql para criar essa coluna.

Pensei mais um pouco e decidi explorar o sql server, apos alguns momentos de estudo, fiz o codigo sql abaixo, onde é passado o nome da tabela e o nome do campo, então ele busca no banco de dados se há algum registro correspondente a essa tabela e campo.

 O código é o seguinte:

select tabela.name as Tabela_BD,colunas.name as Coluna_BD
from sys.tables tabela inner join sys.columns colunas
on tabela.object_id = colunas.object_id
where tabela.name = 'NOME_DA_TABELA' and colunas.name = 'NOME_DA_COLUNA'

Subistituindo na consulta o nome da tabela e o nome da coluna, ao ser executado no banco de dados, caso exista, então ele retorna uma linha, caso não exista, ele não retorna nenhuma linha, e se retornar nenhuma linha, a coluna deve então ser criada.

Podemos tambem usar um pedaço desse código e verificar se no banco de dados existe uma tabela específica, para isso usamos o código abaixo:

select name as nometabela from sys.tables where tables.name = 'NOME_TABELA'

Caso exista, ele retorna o nome da tabela.

 

 

Até a Próxima

 

Thiago Silva SantosDesenvolvedorhttp://www.devbr.net
 
Google Talk: thiagorvgo Skype: thiago.dev MSN: thiagocpmg
Ultima postagem em DevBr.Net Enter funcionado com TAB em C# - [Dica]

 

 

Comentários
Adicionar novo Busca RSS
Lucas S. Tenório  - Muito Bom   |189.54.224.xxx |2010-03-19 16:01:08
Muito boa a SQL.

Simples e rápida.

Obrigado.
Escrever um comentário
Nome:
E-mail:
 
Título:
UBBCode:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0
:confused::cheer:
B):evil:
:silly::dry:
:lol::kiss:
:D:pinch:
:(:shock:
:X:side:
:):P
:unsure::woohoo:
:huh::whistle:
;):s
:!::?:
:idea::arrow:
 
Por favor coloque o código anti-spam que você lê na imagem.

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."