我需要一种工具或方法,允许传输数据并自动更新目标表中的外键。
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')
当插入 slaves 时,我想知道master_id的新值是什么,以保持与原始表中相同的关系。
答案 0 :(得分:4)
如果在表中使用Identity列,则函数SCOPE_IDENTITY()将返回上次插入记录的ID。然后,您可以将其用作辅助表的外键。
http://msdn.microsoft.com/en-us/library/ms190315.aspx
有意义吗?
干杯,约翰
答案 1 :(得分: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)
每次插入时都会调用此sproc
答案 2 :(得分:1)
如果使用UniqueIdentifier(Guid)而不是int,则在将它们从一个数据库移动到另一个数据库时,无需更改ID值。