任何人都可以提供一个 sql 查询的语法,该查询需要一个已经创建的表并将一些数据插入到一个具有新 id(主键)的新表中?到目前为止我试过这个
SELECT ((ID INT IDENTITY(1,1) PRIMARY KEY), column1, column2, column3)
INTO table_name
FROM table_name
我不断提出语法错误。
任何人都可以提供一个 sql 查询的语法,该查询需要一个已经创建的表并将一些数据插入到一个具有新 id(主键)的新表中?到目前为止我试过这个
SELECT ((ID INT IDENTITY(1,1) PRIMARY KEY), column1, column2, column3)
INTO table_name
FROM table_name
我不断提出语法错误。
SELECT column1, column2, column3
INTO table_name_new
FROM table_name_old
像这样使用
INSERT INTO newtable (column1, column2, column3)
SELECT (column1, column2, column3)
FROM table_name
INSERT INTO new_table
(Column1, Column2 . . . )
SELECT Column1, Column2 FROM old_table
不要在插入列表中包含标识列(具有自动生成的数字的主键)。
就像下面这样,插入记录时会自动创建一个新的id
insert into table1 (col1,col2,col3) select col1,col2,col3 from table2;
根据MSDN 上的文档,IDENTITY 属性将通过SELECT INTO
子句传递,但约束不会。这意味着如果您包含源表中的原始 IDENTITY 列,则可以创建一个带有 IDENTITY 列的新表,但新表中的列不会是主键。
明智的做法是在创建表后使用 ALTER TABLE,正如@Kai 所建议的那样。