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?
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
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
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.