数据库A中有两个表。
表1:
人:
person_id,
row1,
row2
教育:
education_id PK,
person_id FK,
row3,
row4
我想将这些表合并到数据库B.我使用临时表来保存记录,但是pk密钥存在问题。在数据库b的表中,主键是自动递增的。如何记住数据库b中表之间的连接,以便创建相同的连接但具有新的主键号。 例如: 教育
education_id person_id
1 3
2 5
3 8
首先,我将合并用于人。优秀的所有数据都合并到数据库B,具有新的PK值。现在我想要合并教育表,但是与数据库B具有相同的关系(如在数据库A中),但具有新的pk值。怎么做?我不确定我是否很好地解释了这个问题。如果有任何问题,请询问他们。
答案 0 :(得分:1)
假设您有2个临时表INCLUDE源数据
DECLARE @Person AS TABLE (personid int)
DECLARE @Education AS TABLE (educationid int, personid int)
DECLARE @MaxPersonId int ---- max Person ID in database B
您可以执行以下步骤将数据插入数据库B.
SET IDENTITY_INSERT dbo.Person ON
是更新的关键
-- 1. UPDATE temp table WITH new PersonId
UPDATE personid in temp Table
UPDATE @Person
SET
personid = personid + @MaxPersonId
UPDATE @Education
SET
personid = personid + @MaxPersonId
-- 2. INSERT person in to database B
-- SET IDENTITY_INSERT dbo.Person ON would do the trick.
-- You could insert a primary auto-increment field by a fixed value
SET IDENTITY_INSERT dbo.Person ON
-- Insert person from temp table @Person
INSERT INTO dbo.Person (PersonId)
SELECT p.personid FROM @Person p
SET IDENTITY_INSERT dbo.Person OFF
-- 3. INSERT INTO dbo.Education from @Education.