Como remover uma coluna de uma tabela existente?
Eu tenho uma mesa MEN
com Fname
eLname
Preciso remover o Lname
Como fazer isso?
sql-server
Gali
fonte
fonte
Respostas:
fonte
Genérico:
No seu caso:
fonte
Seu exemplo é simples e não requer nenhuma alteração adicional na tabela, mas, em geral, isso não é tão trivial.
Se essa coluna for referenciada por outras tabelas, você precisará descobrir o que fazer com outras tabelas / colunas. Uma opção é remover chaves estrangeiras e manter os dados referenciados em outras tabelas.
Outra opção é encontrar todas as colunas de referência e removê-las também, se não forem mais necessárias.
Nesses casos, o verdadeiro desafio é encontrar todas as chaves estrangeiras. Você pode fazer isso consultando as tabelas do sistema ou usando ferramentas de terceiros, como o ApexSQL Search (gratuito) ou o Red Gate Dependency Tracker (premium, mas com mais recursos). Existe um tópico inteiro sobre chaves estrangeiras aqui
fonte
Essa é a resposta correta:
Mas ... se um
CONSTRAINT
existe noCOLUMN
, então você deveDROP
oCONSTRAINT
primeiro, então você vai ser capaz deDROP
oCOLUMN
. Para eliminar umCONSTRAINT
, execute:fonte
constraint
uma coluna ?No SQL Server 2016, você pode usar novas instruções DIE.
A consulta acima pode ser executada novamente
drops
na coluna somente se,exists
na tabela, não gerar erro.Em vez de usar
IF
wrappers grandes para verificar a existência decolumn
antes de descartá-lo, basta executar aDDL
instrução acimafonte
A questão é: você pode excluir apenas uma coluna de uma tabela inexistente ;-)
fonte
A resposta simples para isso é usar o seguinte:
Mais de uma coluna pode ser especificada assim:
No SQL Server 2016, também é possível soltar a coluna apenas se ela existir. Isso impede que você receba um erro quando a coluna não existe, algo que você provavelmente não se importa.
Existem alguns pré-requisitos para descartar colunas. As colunas descartadas não podem ser:
Se qualquer uma das opções acima for verdadeira, você precisará descartar essas associações primeiro.
Além disso, deve-se observar que a eliminação de uma coluna não recupera o espaço do disco rígido até que o índice clusterizado da tabela seja reconstruído. Como tal, geralmente é uma boa ideia seguir o procedimento acima com um comando de reconstrução de tabela como este:
Finalmente, como alguns disseram, isso pode ser lento e provavelmente trancará a mesa durante o período. É possível criar uma nova tabela com a estrutura desejada e renomear assim:
Mas esteja avisado de que existe aqui uma janela para perda de dados das linhas inseridas entre o primeiro comando select e o último renomear.
fonte
Para adicionar colunas na tabela existente:
Para excluir colunas na tabela existente:
fonte
Isso também pode ser feito através da GUI do SSMS. O bom desse método é que ele avisa se há algum relacionamento nessa coluna e também pode excluí-lo automaticamente.
Como afirmei anteriormente, se houver algum relacionamento que também precise ser excluído, nesse momento, será perguntado se você deseja excluí-lo. Você provavelmente precisará fazer isso para excluir a coluna.
fonte
Se você estiver usando C # e a coluna Identity for int, crie uma nova instância de int sem fornecer nenhum valor a ele. Isso funcionou para mim.
fonte
Sintaxe:
Por exemplo:
fonte