Мне нужно добавить несколько столбцов в таблицу, но расположить столбцы после столбца с именем 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 для правильного синтаксиса для использования near ') AFTER
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 AFTER lastname,
ADD COLUMN status INT(10) UNSIGNED NOT NULL AFTER lastname,
ADD COLUMN count SMALLINT(6) NOT NULL AFTER lastname
Нельзя писать имена нескольких столбцов запятыми с помощью 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` ADD COLUMN
`COLUMN NAME` DATATYPE(SIZE) AFTER `EXISTING COLUMN NAME`;
Можешь написать так, у меня этот запрос работал отлично.
Один из вариантов - не утруждать себя перестановкой столбцов в таблице и просто изменить ее, добавив столбцы. Затем создайте представление, в котором столбцы будут расположены в нужном порядке - при условии, что порядок действительно важен. Представление можно легко изменить, чтобы отразить любое упорядочивание, которое вы хотите. Поскольку я не могу представить, что порядок будет важен для программных приложений, представления должно хватить для тех ручных запросов, где он может быть важен.
Это прекрасно работает у меня:
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';
Решение, которое работало для меня со значением по умолчанию 0:
ALTER TABLE reservations ADD COLUMN isGuest BIT DEFAULT 0