Caminho de Navegação Sql / Artigos / Tabelas de comando em SQL Server

Sql

 

Nenhuma avalição
Indique ao Ueba Indique ao BlogBlogs Indique ao Delicious Indique ao Technorati Indique ao Google Bookmarks Indique ao Newsgator
TAGS

Nenhuma tag foi definida ainda!

Defina as tags para esta página preenchendo o campo abaixo.

  • Máximo de 100 tags
  • Cada tag deve ter até 20 caracteres.
  • Separar as tags com virgula. Ex.: php, sql, html, xml, fireworks
COMENTAR

INDICAR
Nome do amigo: E-mail do amigo: Comentário:
REPORTAR ERRO Descreva o erro:

Tabelas de comando em SQL ServerPostada em: 27/01/2005

Robson
Por: Robson Nº de Visualizações: 1717.



Olá pessoal.

Bem, a princípio, creio que todos saibam o que seja "criar tabelas", certo? Então, pode ser que em alguns casos seja necessário que isto seja feito durante o codigo ASP, com nomes dinâmicos, campos dinâmicos, e tudo mais.


Imaginem um exemplo:

Um sistema parecido com webmail. Sempre que um novo usuário é cadastrado, é criada uma nova tabela com o nome dele e com as pastas 'padrões', como Caixa de entrada, Caixa de saída, etc. Então, pensem só..

Se não existisse tal comando, para criar dinamicamente, toda vez que alguém se cadastrasse o administrador teria que abrir o banco, criar a tabela, adicionar os campos padrões. Imaginem isto para 100 usuários. Mão de obra, né?

Eu digo isto porque já montei um sistema similar ao que citei anteriormente, e foi por isso que corri atrás para descobrir como criar tabelas direto, pelo SQL. Bom. Chega de blah blah blah, e vamos ao que interessa.


Estes códigos e sintaxes eu testei apenas no banco de dados Access, portanto não me responsabilizo caso não funcione com outros tipos de banco de dados.


Vamos partir do princípio:


Passo 1: Conectar ao banco de dados

url_conexao = Server.MapPath("banco.mdb")
set conexao = Server.CreateObject("ADODB.Connection")
conexao.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&url_conexao
 


Não vou entrar em detalhes de como é feita a conexão; esta é uma forma, porém existem mais tipos. Com a conexão feita, podemos criar o SQL que criará a tabela.


Passo 2: Montando o SQL

SQL = "CREATE TABLE nome_tabela (campo1 AutoIncrement, campo2 char(50), campo3 integer, Primary Key(campo1) )"
 


Vamos entender o SQL acima:

  • CREATE TABLE > comando do SQL que faz a criação da tabela. Este nunca muda!
  • nome_tabela > é o nome da tabela que será criada. Pode ser uma variável vinda de um formulário. Vale ressaltar que se a tabela já existir, vai gerar um erro! Podemos driblar isto fazendo um simples IF, e testando se a tabela já existe.
  • ( > isto é um parêntese mesmo. Ele inicia a definição de campos. E deve ser fechado, antes do término do SQL.
  • campo1 > é o nome do campo que será criado.
  • AutoIncrement > é o tipo de campo que será criado. Este, é AutoNumeração. Mas pode ser Texto, Numero, Data, Memo, etc.
  • Primary Key (campo1) > aqui estamos dizendo qual é a chave primária da tabela. Entre parênteses vai o nome do campo que será chave primaria.
  • ) > aqui fechamos o parêntese de definição dos campos da tabela.


Bem, após o Passo2 a tabela foi criada com sucesso, ou não. Pode ser que ela já exista, e tenha dado erro. Para isto, podemos usar o Passo 3!


Passo3: Testando se a tabela já existe!

adSchemaTables = 20
Set rsTabs = conexao.OpenSchema(adSchemaTables)

tabela = false
Do while not rsTabs.EOF
    if rsTabs("TABLE_TYPE") = "TABLE" then
        if rsTabs("TABLE_NAME") = "nome_tabela" then
            tabela = true
        end if
    end if
    rsTabs.MoveNext
Loop

if tabela = false then
    Response.Write "A tabela não existe"
else
    Response.Write "A tabela existe!"
end if
 


Então, vamos tentar entender.
A variável tabela é inicializada com FALSE. Ela somente será TRUE caso a tabela já exista! Pois, dentro do LOOP, estamos passando por todas as tabelas existentes, testando se alguma delas é igual à que vamos criar!


Bem, por hora, acho que é isso! Abraços, e boa programação!


Robson