Ответ 1
Попробуйте это
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`;
проверьте синтаксис
Мне нужно добавить несколько столбцов в таблицу, но расположить столбцы после столбца с именем 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
Как я могу использовать ПОСЛЕ в запросе, как этот?
Попробуйте это
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
Если вы хотите добавить несколько столбцов, вам нужно использовать команду "ДОБАВИТЬ" каждый раз для столбца. Вот запрос 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