2012-05-03 4 views
2

Может ли кто-нибудь предлагать синтаксис для SQL-запроса, который принимает уже созданную таблицу и вставляет некоторые данные в новую таблицу с новым id (primary key)? До сих пор я пробовал этоSql Query Создать новую таблицу

SELECT ((ID INT IDENTITY(1,1) PRIMARY KEY), column1, column2, column3) 
INTO table_name 
FROM table_name 

Я продолжаю придумывать синтаксическую ошибку.

+0

Просто для понимания: почему бы вам просто не скопировать таблицу «from» и изменить первичный ключ после инструкции «alter-table»? – Kai

+0

Вы не можете вставить объявление столбца в строку таблицы. И ваш пример выбирает в table_name из table_name - возможно, вы захотите обновить свой пример, чтобы уточнить, что вы (вы?) Означают INTO target_table FROM source_table. – Cylindric

ответ

2
INSERT INTO new_table 
(Column1, Column2 . . .) 

SELECT Column1, Column2 FROM old_table 

Не включайте в список вставки столбец идентификации (первичный ключ с автоматически сгенерированными номерами).

3
INSERT INTO newtable (column1, column2, column3) 
SELECT (column1, column2, column3) 
FROM table_name 
2

Просто сделать это, как показано ниже, Aa новый идентификатор будет создан автоматически при вставке записи

insert into table1 (col1,col2,col3) select col1,col2,col3 from table2; 
4
SELECT column1, column2, column3 
INTO table_name_new 
FROM table_name_old 

использовать как этот

1

Согласно documentation on MSDN, свойство IDENTITY будет передайте с помощью предложения SELECT INTO, но ограничений не будет. Это означает, что вы можете создать новую таблицу с столбцом IDENTITY, если вы включите исходный столбец IDENTITY из исходной таблицы, но столбец в новой таблице не будет основным ключом.

Здравый способ сделать это - использовать ALTER TABLE после создания таблицы, как предположил @Kai.

Смежные вопросы