如何在合并语句中的表之间建立适当的关系?
问题描述:
有数据库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值。怎么做?我不确定我是否很好地解释了这个问题。如果有任何问题,问问他们。
答
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.
只需使用一键“在源和目标之间“登台”表。在那里你可以保持新旧主键之间的关系,这将有助于你做后续的更新。 –