none
Inserir coluna no meio da tabela RRS feed

  • Pergunta

  • Bom dia,

    Eu tenho uma tabela com as colunas A,B,C,D

    Gostaria de inserir uma nova coluna entre a coluna B e C.

    Estou fazendo assim:

    alter

     

    table TABELA add NOVA_COLUNA numeric(13,4) not null default (0) AFTER COLUNA_ANTERIOR

    Mas sem sucesso.

     

     

    terça-feira, 22 de fevereiro de 2011 14:46

Respostas

  • Marco, no próprio link que o caputofa envio, tem a sua resposta.

    1. INFORMATION_SCHEMA.Columns is a view to syscolumns.colid.
    2. Microsoft doesn't support moving ordinal positions in SQL Server.
    3. Enterprise Manager creates a new table, moves data, and renames the table when you reorder columns.

    Neste caso teria que ser feito mais ou menos isso:

    CREATE TABLE teste
    (
    	COLUMN1 INT
    	,column2 INT
    	,column3 int	
    )
    INSERT teste VALUES (1,2,3)
    INSERT teste VALUES (1,2,3)
    INSERT teste VALUES (1,2,3)
    
    SELECT * INTO teste2 FROM (SELECT column1,column3, column2 FROM teste) AS x
    drop table teste;
    EXEC sp_rename 'teste2', 'teste'
    SELECT * FROM teste
    

    Abraço

    Estevam


    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    • Marcado como Resposta Eder Costa terça-feira, 1 de março de 2011 18:18
    terça-feira, 22 de fevereiro de 2011 17:16

Todas as Respostas

  • Cega86,

     

    Não sei fazer via codigo, todo caso, clique com o botão direito na tabela, va em design, ele vai abrir a ferramenta grafica da tabela, depois, clique ao lado de onde quer inserir com o botao direito e insert new column (como se fosse um excel mesmo...)

     

    OBS: O after é do MySQL =)


    ---------------------------------------------- Para dicas SQL Server e mais -> www.onlywhatmatters.wordpress.com
    terça-feira, 22 de fevereiro de 2011 14:50
    Moderador
  • Blz , mas eu preciso adicionar via script.

    De qualquer forma obrigado.

    terça-feira, 22 de fevereiro de 2011 15:37
  • Cega,

     

    Nunca fiz, todo case, de uma olhada neste forum, um pouco amis no meio da pagina ele adiciona normalmente a coluna no final, e a reorganiza, ou seja, são 2 steps....serviria para voce?

     

    http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=58912


    ---------------------------------------------- Para dicas SQL Server e mais -> www.onlywhatmatters.wordpress.com
    • Sugerido como Resposta Eder Costa terça-feira, 1 de março de 2011 18:17
    terça-feira, 22 de fevereiro de 2011 15:41
    Moderador
  • Caputofa, Até tentei fazer o que vc mandou...mas não funcionou. Se puder descrever um passo a passo, seria bem interessante. Achei o assunto bacana....
    Marco Antônio Pinheiro / MCTS - Database Developer 2008 http://marcoantoniopinheiro.blogspot.com Se o post foi útil, não esqueça de marcá-lo.
    terça-feira, 22 de fevereiro de 2011 16:42
  • O via script ou via ferramenta grafica?
    ---------------------------------------------- Para dicas SQL Server e mais -> www.onlywhatmatters.wordpress.com
    terça-feira, 22 de fevereiro de 2011 16:44
    Moderador
  • Tentei via script..vou tentar graficamente.
    Marco Antônio Pinheiro / MCTS - Database Developer 2008 http://marcoantoniopinheiro.blogspot.com Se o post foi útil, não esqueça de marcá-lo.
    terça-feira, 22 de fevereiro de 2011 16:46
  • Via ferramenta grafica funciona certeza, via script, não testei rs...
    ---------------------------------------------- Para dicas SQL Server e mais -> www.onlywhatmatters.wordpress.com
    terça-feira, 22 de fevereiro de 2011 16:51
    Moderador
  • Marco, no próprio link que o caputofa envio, tem a sua resposta.

    1. INFORMATION_SCHEMA.Columns is a view to syscolumns.colid.
    2. Microsoft doesn't support moving ordinal positions in SQL Server.
    3. Enterprise Manager creates a new table, moves data, and renames the table when you reorder columns.

    Neste caso teria que ser feito mais ou menos isso:

    CREATE TABLE teste
    (
    	COLUMN1 INT
    	,column2 INT
    	,column3 int	
    )
    INSERT teste VALUES (1,2,3)
    INSERT teste VALUES (1,2,3)
    INSERT teste VALUES (1,2,3)
    
    SELECT * INTO teste2 FROM (SELECT column1,column3, column2 FROM teste) AS x
    drop table teste;
    EXEC sp_rename 'teste2', 'teste'
    SELECT * FROM teste
    

    Abraço

    Estevam


    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    • Marcado como Resposta Eder Costa terça-feira, 1 de março de 2011 18:18
    terça-feira, 22 de fevereiro de 2011 17:16
  • Via ferramenta grafica só consigo inserir colunas na sequencia. Não é possivel criar entre as colunas já existentes. Segue a mensagem que é apresentada: "Saving changes is not permitted. The changes you have mad require the following tables to be dropped and re-created. You have either made changes to a table that can't be re-created or enabled the option Prevent saving changes that require the table to be re-created." Acredito não ser possivel fazer isso sem dropar e recriar a tabela.
    Marco Antônio Pinheiro / MCTS - Database Developer 2008 http://marcoantoniopinheiro.blogspot.com Se o post foi útil, não esqueça de marcá-lo.
    terça-feira, 22 de fevereiro de 2011 17:20
  • OK Luiz...Obrigado. O que estava tentando fazer era criar um script ou via ferramenta grafica, sem ter que criar uma tabela nova ou coisa do tipo, conforme está no exemplo. Mas deu certo assim. Valeu.
    Marco Antônio Pinheiro / MCTS - Database Developer 2008 http://marcoantoniopinheiro.blogspot.com Se o post foi útil, não esqueça de marcá-lo.
    terça-feira, 22 de fevereiro de 2011 17:28
  • A, Marco, este é um problema da propria ferramenta (sim, estupido), para arrumar va em Tools -> Options -> menu a esquerda design -> tem uma opção que se refere a tabela e bloqueia isso, desmarca a opção.
    ---------------------------------------------- Para dicas SQL Server e mais -> www.onlywhatmatters.wordpress.com
    terça-feira, 22 de fevereiro de 2011 17:28
    Moderador
  • Cega86,

     

    faça da seguinte forma, no menu do Sql Server Management Studio clique em:

    tools-options-designers-Table and DataBase Designers

    e desabilite a opção:

    prevent saving changes that require the table re-creation.

     

    Espero ter ajudado,

     

    Atenciosamente,

     

    Vinícius Melo Juraszek.

    quinta-feira, 24 de fevereiro de 2011 23:52
  • Cega, Conseguiu?
    ------------------------------------------------------------- Oracle OCA11g
    sexta-feira, 25 de fevereiro de 2011 22:53
    Moderador