1

我在 SQL Server 数据库中有两个几乎相同的表 A 和 B。

表 A 包含数据和设置为 的主键Is Identity == NoX。

表 B 不包含数据,但主键 X 设置为Is Identity == Yes( Identity Increment = 1, Identity Seed = 1)。

主键 X 中的数据从 1 递增到 100,即表 A 有 100 条记录,第一条记录为 1,第 100 条记录为 100。

如何以最简单的方式将数据从表 A 复制到表 B 而不会出错。

4

3 回答 3

5

set identity_insert tableB on在运行之前使用insert

 set identity_insert tableB on

 insert tableB (Id, field1, field2)
 select id, field1, field2 from tablea

 set identity_insert tableB off
于 2013-10-16T08:44:33.010 回答
0

是的,您需要枚举列。另一方面 - B 表上的身份是否必要,而它来自 A?

主键 X 中的数据从 1 递增到 100,即表 A 有 100 条记录,第一条记录为 1,第 100 条记录为 100。

遵循这条规则似乎不需要 B 的增量,而标识是从表 A 中获取的。

最终考虑在 B 上 RESEED 以满足 IDENT_CURRENT 限制。(种子信息

于 2013-10-16T09:19:26.923 回答
0

如果您确定 tableA 中有 100 行并且 id 从 1 到 100 没有重复,那么您可以轻松地将 tableA 数据复制到 tableB,例如,

insert tableB (field1, field2) 
select field1, field2 from tableA order by id

Id 字段将自动生成,因为它是标识列

于 2013-10-16T09:40:26.227 回答