如何在合并语句中的表之间建立适当的关系?

问题描述:

有数据库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

只需使用一键“在源和目标之间“登台”表。在那里你可以保持新旧主键之间的关系,这将有助于你做后续的更新。 –

Assumming,你有2个临时表中包含源数据

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.