2009-02-11 70 views
1

我需要一種工具或方法,允許傳輸數據並自動更新目標表中的外鍵。複製數據並保持新ID的參考完整性

SET IDENTITY_INSERT ON/OFF不是我正在尋找的。

例子:

table master (id int identity, name char) 
table slave (id int identity, master_id int, name char) 

我想創建一個這樣的腳本:

insert into master(name) values ('master a') 
insert into master(name) values ('master b') 

insert into slave(master_id,name) values (?, 'slave aa') 
insert into slave(master_id,name) values (?, 'slave bb') 
insert into slave(master_id,name) values (?, 'slave cc') 
insert into slave(master_id,name) values (?, 'slave dd') 

當插入奴隸,我想知道什麼是master_id的新價值,以保持與原始表格中相同的關係。

+0

這聽起來像你只需要在一個數據庫中的兩個表。但是,當您將數據從一個數據庫複製到另一個數據庫時,傳統上會使用「主」和「從」名稱,如同在複製中一樣。你能澄清嗎? – 2009-02-11 18:16:07

+0

這不是複製。例如,示例表可以被命名爲「作者」和「書」。 – pvieira 2009-02-11 21:43:26

回答

2

@約翰·桑塞姆:正確的金錢

@ pv2008:每次

create proc InsertAndUpdate 
@parentName varchar(255), 
@childName varchar(255) 

as 
declare @newParentId int 
insert into PARENT values (@parentName) 
select @newParentId = SCOPE_IDENTITY() 

insert into CHILD values (@newParentId, @childName) 

調用存儲過程這個插入

1

如果使用唯一標識符(GUID),而不是INT,那麼你不需要當你從一個數據庫移動到另一個更改ID值。