Подтвердить что ты не робот

Как вставить столбцы в определенную позицию в существующей таблице?

Я создал таблицу с 85 столбцами, но пропустил один столбец. Пропущенный столбец должен быть 57-м. Я не хочу бросать эту таблицу и создавать ее снова. Я смотрю, чтобы отредактировать эту таблицу и добавить столбец в 57-й индекс.

Я попытался следующий запрос, но он добавил столбец в конце таблицы.

ALTER table table_name
Add column column_name57 integer

Как я могу вставить столбцы в определенную позицию?

4b9b3361

Ответ 1

ALTER TABLE по умолчанию добавляет новые столбцы в конце таблицы. Используйте директиву AFTER, чтобы поместить ее в определенную позицию в таблице:

ALTER table table_name
    Add column column_name57 integer AFTER column_name56

Из mysql doc

Чтобы добавить столбец в определенную позицию в строке таблицы, используйте FIRST или AFTER col_name. По умолчанию добавляется последний столбец. Вы также можете использовать операции FIRST и AFTER в CHANGE или MODIFY для изменения порядка столбцов в таблице.

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

Я искал это для PostgreSQL, но кажется невозможным.

Ответ 2

Попробуйте это

ALTER TABLE tablename ADD column_name57 INT AFTER column_name56

См. здесь

Ответ 3

ALTER TABLE table_name ADD COLUMN column_name57 INTEGER AFTER column_name56

Ответ 4

ALTER TABLE table_name ADD COLUMN column_name integer

Ответ 5

если вы говорите ADD COLUMN column_name, тогда он будет вызывать ошибку

u нужно попробовать

 ALTER TABLE temp_name ADD My_Coumn INT(1) NOT NULL DEFAULT 1

помните, что в таблице уже записано несколько записей, и вам нужно создать новый столбец, либо либо вы должны сделать его нулевым, либо у вас нужно определить значение по умолчанию, как в моем запросе

Ответ 6

SET
    @column_name =(
    SELECT COLUMN_NAME
FROM
    information_schema.columns
WHERE
    table_schema = 'database_name' AND TABLE_NAME = 'table_name' AND ordinal_position = 56
);
SET
    @query = CONCAT(
        'ALTER TABLE 'table_name' ADD 'new_column_name' int(5) AFTER ',
        @column_name
    );
PREPARE
    stmt
FROM
    @query;
EXECUTE
    stmt;
DEALLOCATE
    stmt;

Ответ 7

Я попытался изменить таблицу следующим образом:

table_name add column column_name after column column_name;

Первый column_name - это новое имя столбца, второй column_name - это существующий столбец, в который вы планируете вставлять его после.