alter table agregar VARIAS columnas DESPUÉS DE columna1


Necesito agregar varias columnas a una tabla pero posicionar las columnas después de una columna llamada lastname.

He intentado esto:

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

Obtengo este error:

Tiene un error en su sintaxis SQL; consulte el manual que corresponde a su versión del servidor MySQL para la sintaxis correcta a utilizar near') AFTER lastname ' at line 7

¿Cómo puedo usar AFTER en una consulta como esta?

 274
Author: Koala, 2013-07-09

7 answers

Prueba esto

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`;

Compruebe la sintaxis

 556
Author: Ayyappan Sekar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-09 06:32:39

Si desea agregar una sola columna después de un campo específico, entonces la consulta mysql es:

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

Si desea agregar varias columnas, debe usar el comando 'ADD' cada vez para una columna. La consulta mysql de la siguiente manera:

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

Punto a tener en cuenta: En el segundo método, el último ADD COLUMN column debería ser la primera columna que desea agregar a la tabla.

Por ejemplo: si desea agregar count, log, status en orden después de lastname, entonces el la sintaxis sería en realidad:

ALTER TABLE users
    ADD COLUMN log VARCHAR(12) NOT NULL,
    ADD COLUMN status INT(10) UNSIGNED NOT NULL,
    ADD COLUMN count SMALLINT(6) NOT NULL
    AFTER lastname
 62
Author: user3106476,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-16 08:59:49

Este es correcto:

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`;
 7
Author: Denys Popov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-13 10:10:14

No puede mencionar varios nombres de columna con comas usando ADD COLUMN. Debe mencionar ADD COLUMN cada vez que defina una nueva columna.

 4
Author: Piyush Saxena,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-15 23:08:55

Una posibilidad sería no preocuparse por reordenar las columnas en la tabla y simplemente modificarla agregando las columnas. Luego, cree una vista que tenga las columnas en el orden que desea, asumiendo que el orden es realmente importante. La vista se puede cambiar fácilmente para reflejar cualquier pedido que desee. Dado que no puedo imaginar que el orden sea importante para las aplicaciones programáticas, la vista debería ser suficiente para aquellas consultas manuales donde podría ser importante.

 1
Author: Ahmed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-09 06:30:16

ALTER TABLE users ADD COLUMN COLUMN NAME TIPO DE DATOS (TAMAÑO) DESPUÉS DE EXISTING COLUMN NAME;

Puedes hacerlo con esto, trabajando bien para mí.

 1
Author: Gaurav Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-08 07:22:45

Esto funciona bien para mí:

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';
 1
Author: Aiswarya T S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-16 09:52:57