2015-09-02 2 views
4

Я хочу скопировать столбец (определение, а не данные) из одной таблицы в другую. Добавьте столбец, если он не существует в таблице назначения, или еще лучше, измените его, если он существует.Скопировать определение столбца из одной таблицы в другую?

Пробовал в google, но все, кажется, связано с копированием данных, а не с определением, или с копированием всей таблицы с использованием CREATE TABLE ... LIKE ....

До сих пор the closest я мог бы найти это:

CREATE TABLE table2 AS 
SELECT field4, field7    -- only the columns you want 
FROM table 
WHERE FALSE;     -- and no data 

Но мне нужно скопировать столбцы в существующие таблицы. Поэтому я пробовал:

ALTER TABLE table2 AS 
SELECT field4, field7    -- only the columns you want 
FROM table 
WHERE FALSE;     -- and no data 

Но, по-видимому, он отказался работать.

Есть ли что-то вроде этого?

ALTER TABLE table1 ADD COLUMN column2 LIKE table2.column5 

Любой способ достичь этого в MySQL?

+0

Номер 'CREATE TABLE' может быть создан из' SELECT' запроса, но 'ALTER TABLE' имеет другой синтаксис, который не включает запрос SELECT. – uri2x

ответ

0

Лучший способ заключается в Dump таблицы, а затем вы можете использовать ALTER команду, чтобы создать новую таблицу.

Сбрасывание таблицы возвращает запрос CREATE стол.

CREATE TABLE IF NOT EXISTS customer ( id int(11) NOT NULL AUTO_INCREMENT, customerId varchar(50) NOT NULL, firstName varchar(30) NOT NULL, middleName varchar(30) DEFAULT NULL, lastName varchar(30) CHARACTER SET utf8 COLLATE utf8_estonian_ci DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

использовать то же самое, чтобы ALTER существующую таблицу, (скажем customerinfo)

`ALTER TABLE customerinfo ADD COLUMN (
    customerId varchar(50) NOT NULL, 
    firstName varchar(30) NOT NULL, 
    middleName varchar(30) DEFAULT NULL, 
    lastName varchar(30) CHARACTER SET utf8 COLLATE utf8_estonian_ci DEFAULT NULL 
) 
Смежные вопросы