Adicionando várias colunas DEPOIS de uma coluna específica no MySQL

Eu preciso adicionar várias colunas a uma tabela, mas posicione as colunas após uma coluna chamada lastname.

Eu já tentei isto:

ALTER TABLE `users` ADD COLUMN
(
    `count` smallint(6) NOT NULL,
    `log` varchar(12) NOT NULL,
    `status` int(10) unsigned NOT NULL
) 
AFTER `lastname`;

Eu percebo este erro:

Você tem um erro na sua sintaxe SQL; verifique o manual que corresponde à sua versão do servidor MySQL para a sintaxe certa a utilizar perto de ') APÓS lastname' na linha 7


Como posso usar DEPOIS em uma consulta como esta?

Solução

Tente isto.

ALTER TABLE users
ADD COLUMN `count` SMALLINT(6) NOT NULL AFTER `lastname`,
ADD COLUMN `log` VARCHAR(12) NOT NULL AFTER `count`,
ADD COLUMN `status` INT(10) UNSIGNED NOT NULL AFTER `log`;

verifique a sintaxe

Comentários (2)

Se você quiser adicionar uma única coluna após um campo específico, então a seguinte consulta MySQL deve funcionar:

ALTER TABLE users
    ADD COLUMN count SMALLINT(6) NOT NULL
    AFTER lastname

Se você quiser adicionar várias colunas, então você precisa usar 'ADD' comando cada vez para uma coluna. Aqui está a consulta MySQL para isto:

ALTER TABLE users
    ADD COLUMN count SMALLINT(6) NOT NULL,
    ADD COLUMN log VARCHAR(12) NOT NULL,
    ADD COLUMN status INT(10) UNSIGNED NOT NULL
    AFTER lastname

Ponto a notar

No segundo método, a última ADD COLUMN coluna deve ser na verdade a primeira coluna que você quer anexar à tabela.

Por exemplo: se você quiser adicionar count, log, status na ordem exata após lastname, então a sintaxe seria de fato:

ALTER TABLE users
    ADD COLUMN log VARCHAR(12) NOT NULL AFTER lastname,
    ADD COLUMN status INT(10) UNSIGNED NOT NULL AFTER lastname,
    ADD COLUMN count SMALLINT(6) NOT NULL AFTER lastname
Comentários (5)

Uma possibilidade seria não se preocupar em reordenar as colunas na tabela e simplesmente modificá-la, adicionando as colunas. Então, crie uma vista que tenha as colunas na ordem que você quer -- assumindo que a ordem é realmente importante. A vista pode ser facilmente alterada para refletir qualquer ordenação que você queira. Como eu posso'não imagino que a ordem seja importante para aplicações programáticas, a view deve ser suficiente para aquelas consultas manuais onde ela possa ser importante.

Comentários (1)