没有列名列表的tsql标识插入

Dav*_*vid 5 t-sql sql-server

我要将一些数据从一个数据库转储到另一个数据库.我在用

set identity_insert MyTable on
GO
INSERT INTO MyTable SELECT * FROM sourceDB.dbo.MyTable
GO
set identity_insert MyTable off
Run Code Online (Sandbox Code Playgroud)

无论如何要让它工作?有30个表,将列名列表添加到insert语句将非常耗时.我正在使用SQL Server 2000.将在不久的将来升级到SQL Server 2008.

编辑:MyTable有一个标识列.

HLG*_*GEM 5

只需从对象浏览器中拖放列名称即可。您可以比编写select *花费大约1秒钟的时间来完成此步骤,而且绝对不要在生产代码中使用select *。这是一个糟糕的做法。

我担心您插入Identity列,但这几乎是不应该做的。如果原始表的某些标识列与新表中的现有ID相同,该怎么办?在决定从另一个表插入ID值之前,请确保检查此内容。我更喜欢对父表进行插入并获取一个新ID,并将其与旧ID匹配(2008年的输出对此很有用),然后将新ID用于所有子表,但要加入旧ID。