我在SQL Server数据库中有两个几乎相同的表A和B.
表A包含数据和主键X设置为Is Identity == No
。
表B不包含任何数据,但主键X设置为Is Identity == Yes
(Identity Increment = 1, Identity Seed = 1
)。
主键X中的数据增加1到100,即表A有100条记录,第一条记录为1,第100条记录为100条。
如何以最简单的方式将数据从表A复制到表B而没有错误。
答案 0 :(得分:4)
您在运行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
答案 1 :(得分:0)
是的,您需要枚举列。另一方面 - 在B表上是必要的身份,而它取自A?
主键X中的数据增加1到100,即表A有100条记录,第一条记录为1,第100条记录为100条。
遵循此规则似乎不需要B的增量,而身份来自表A.
最终考虑在B上重新设置以满足IDENT_CURRENT限制。 (Reseed information)
答案 2 :(得分:0)
如果您确定tableA中有100行且id为1到100而没有重复,那么您可以轻松地将tableA数据复制到tableB,
insert tableB (field1, field2)
select field1, field2 from tableA order by id
Id字段将自动生成标识列