Uma necessidade comum de muitos desenvolvedores é verificar a existência de objetos no banco de dados. Então vou fazer aqui uma rapidinha com exemplos bem básicos, pras situações mais comuns, vamos lá:
A tabela tb_Pedido existe no banco?
use [meuBanco]
GO
if exists
(select * from information_schema.tables where table_name = ‘tb_pedido’)
print ‘Tabela existe’
else
print ‘Tabela não existe’
Quais tabelas no banco possuem a coluna cod_cliente?
use [meuBanco]
GO
select table_name, data_type
from information_schema.columns
where column_name = ‘cod_cliente’
A coluna cod_cliente existe na tabela tb_Pedido? Se não existe, adicionar:
use [meuBanco]
GO
if exists
(select * from information_schema.columns
where table_name = ‘tb_pedido’ and column_name = ‘cod_cliente’)
print ‘Coluna existe.’
else
alter table tb_pedido add cod_cliente int
Observe que nos três exemplos acima, utilizamos as seguintes views de metadados:
- information_schema.tables – que apresenta diversas informações sobre as tabelas de um banco.
- information_schema.columns – que apresenta informações sobre as colunas, das tabelas de um banco.
Ok, mas afinal o que são METADADOS?
A definição mais comum é: informação sobre os dados. Esta definição não é muito amigável, eu sei, mas o que você precisa saber é que todos os objetos que você cria no banco, como tabelas, procedures, índices, etc, tem suas informações armazenadas em tabelas de sistema do SQL Server e as views utilizadas neste post buscam esses dados nas tabelas de sistema.
Comentaremos mais sobre metadados em outro posts, mas se você deseja se aprofundar no assunto, dê uma estudada neste link.
Até +