使用相同的结构将行从一个表复制到另一个表

时间:2013-07-01 21:47:42

标签: sql sql-server

我想在SQL Server中将行从Variables复制到VariablesTest。这两个列具有相同的列,数据类型等。通过下面的答案,我认为这是要走的路

set IDENTITY_INSERT VariablesTest ON
insert VariablesTest Select * from Variables
set IDENTITY_INSERT VariablesTest OFF

但是SQL Server Management Studio会抛出错误:

An explicit value for the identity column in table 'VariablesTest' can only be specified when a column list is used and IDENTITY_INSERT is ON.

唉...

2 个答案:

答案 0 :(得分:1)

“只能在使用列列表时指定”

错误消息告诉您使用列列表:

set IDENTITY_INSERT VariablesTest ON
insert VariablesTest(column1,column2,etc) Select column1,column2,etc from Variables
set IDENTITY_INSERT VariablesTest OFF

答案 1 :(得分:0)

如果您知道两个表中的列相同,则仍需要为INSERT部分列出它们,但SELECT部分​​可以使用星号...

set IDENTITY_INSERT VariablesTest ON

INSERT VariablesTest (col1, col2, col3, col4,...) SELECT * FROM Variables

set IDENTITY_INSERT VariablesTest OFF

...这不是稳定的代码,如果将一个列添加到两个表中,或只是一个列,它将会中断。因此即使这是可能的,分别列出两组列也是首选方法。使用Red Gate的SQL Prompt等工具可以让您将星号自动扩展为以逗号分隔的列列表,这也是一个选项,也是我经常用来节省输入和错误的选项。