我想在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.
唉...
答案 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等工具可以让您将星号自动扩展为以逗号分隔的列列表,这也是一个选项,也是我经常用来节省输入和错误的选项。