Eu preciso ALTER
dos tipos de dados de várias colunas em uma tabela.
Para uma única coluna, o seguinte funciona bem:
ALTER TABLE tblcommodityOHLC
ALTER COLUMN
CC_CommodityContractID NUMERIC(18,0)
Mas como altero várias colunas em uma instrução? O seguinte não funciona:
ALTER TABLE tblcommodityOHLC
ALTER COLUMN
CC_CommodityContractID NUMERIC(18,0),
CM_CommodityID NUMERIC(18,0)
sql-server
tsql
alter-column
D.mahesh
fonte
fonte
Respostas:
Isso não é possível. Você precisará fazer isso um por um.
Você pode criar uma tabela temporária com suas colunas modificadas, copiar os dados, soltar sua tabela original e renomear sua tabela temporária para seu nome original.
fonte
You will need to do this one by one.
então, qual é o problema, basta usar váriosALTER TABLE ALTER COLUMN
comandos?"Each statement means a new scan"
: Não necessariamente @erikkallen. Em alguns casos, a coluna ALTER é uma simples alteração de metadados. Você está convidado a participar da minha palestra amanhã sobre "SQL Internals - Physical Table Structure under the hood, and implementation on real case scenarios
" para ver tudo isso de forma prática :-)Não é possível executar várias
ALTER COLUMN
ações em uma únicaALTER TABLE
instrução.Veja a
ALTER TABLE
sintaxe aquiVocê pode fazer múltiplos
ADD
ou múltiplosDROP COLUMN
, mas apenas umALTER COLUMN
.fonte
Como outras pessoas responderam, você precisa de várias
ALTER TABLE
declarações.Tente o seguinte:
fonte
A solução a seguir não é uma declaração única para alterar várias colunas, mas sim, simplifica a vida:
Gere o
CREATE
script de uma tabela .Substitua
CREATE TABLE
porALTER TABLE [TableName] ALTER COLUMN
para primeira linhaRemova colunas indesejadas da lista.
Altere os tipos de dados das colunas como desejar.
Realize uma localização e substituição… da seguinte maneira:
NULL
,NULL; ALTER TABLE [TableName] ALTER COLUMN
Execute o script.
Espero que ele economize muito tempo :))
fonte
Como muitos outros disseram, você precisará usar vários
ALTER COLUMN
instruções, uma para cada coluna que deseja modificar.Se você deseja modificar todas ou várias das colunas da sua tabela para o mesmo tipo de dados (como expandir um campo VARCHAR de 50 para 100 caracteres), é possível gerar todas as instruções automaticamente usando a consulta abaixo. Essa técnica também é útil se você deseja substituir o mesmo caractere em vários campos (como remover \ t de todas as colunas).
Isso gera uma
ALTER TABLE
declaração para cada coluna para você.fonte
Se você fizer as alterações no Management Studio e gerar scripts, ela cria uma nova tabela e insere os dados antigos nela com os tipos de dados alterados. Aqui está um pequeno exemplo de alteração dos tipos de dados de duas colunas
fonte
Se você não quiser escrever a coisa toda e alterar todas as colunas para o mesmo tipo de dados, isso poderá facilitar:
Você pode copiar e colar a saída como sua consulta
fonte
fonte
Graças ao exemplo de código de Evan, eu pude modificá-lo mais e especificá-lo para tabelas que começavam com nomes de colunas específicos E lidamos com detalhes de restrições também. Executei esse código e copiei a coluna [CODE] e a executei sem problemas.
fonte
fonte
Podemos alterar várias colunas em uma única consulta como esta:
Basta fornecer as consultas como separadas por vírgula.
fonte
Coloque a
ALTER COLUMN
declaração dentro de um suporte, ele deve funcionar.fonte
Se entendi sua pergunta corretamente, você pode adicionar várias colunas em uma tabela usando a consulta mencionada abaixo.
Inquerir:
fonte