Мне нужно добавить несколько столбцов в таблицу, но поместить столбцы после столбца с именем lastname
.
Я пробовал это:
ALTER TABLE `users` ADD COLUMN
(
`count` smallint(6) NOT NULL,
`log` varchar(12) NOT NULL,
`status` int(10) unsigned NOT NULL
)
AFTER `lastname`;
Я получаю эту ошибку:
У вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL для правильного синтаксиса для использования рядом ") ПОСЛЕ
lastname
'в строке 7
Как я могу использовать AFTER в запросе вроде этого?
Попробуйте это
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`;
проверьте синтаксис
Если вы хотите добавить один столбец после определенного поля, то запрос mysql:
ALTER TABLE users
ADD COLUMN count SMALLINT(6) NOT NULL
AFTER lastname
Если вы хотите добавить несколько столбцов, вам нужно каждый раз использовать команду "ADD" для столбца. Запрос mysql выглядит следующим образом:
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
Указание на заметку. Во втором методе последний столбец ADD COLUMN
должен быть первым столбцом, который вы хотите добавить в таблицу.
например: если вы хотите добавить count
, log
, status
в порядок после lastname
, тогда синтаксис будет фактически:
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
Это верно:
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`;
Вы не можете указать несколько имен столбцов запятыми, используя ADD COLUMN
. Вы должны указать ADD COLUMN
каждый раз, когда вы определяете новый столбец.
Это отлично работает для меня:
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';
ALTER TABLE users
ДОБАВИТЬ КОЛОННУЮ
COLUMN NAME
DATATYPE (SIZE) ПОСЛЕ EXISTING COLUMN NAME
;
Вы можете сделать это с этим, работая отлично для меня.
Одна из возможностей заключалась бы в том, чтобы не беспокоиться о переупорядочении столбцов в таблице и просто изменять ее, добавляя столбцы. Затем создайте представление, в котором есть столбцы в нужном вам порядке - при условии, что порядок действительно важен. Представление можно легко изменить, чтобы отразить любое упорядочение, которое вы хотите. Поскольку я не могу себе представить, что заказ будет важен для программных приложений, представление должно быть достаточным для тех ручных запросов, где это может быть важно.
ALTER TABLE
немного отличается между диалектами.