2011-11-01 134 views
0

我有一个asp.net web应用程序,用户可以在其中更新数据库中的表。插入和删除不匹配记录

我有一个表,看起来像这样在SQL Server 2008:

lom_number(fk) problem primarykey 
1   AA  1 
1   AA1  2 
1   AA3  3 
23   B  4 
22   C  5 

用户具有前端,可以更改基础上,foreignkey

用户可以更新数据该数据像这样:

  1. 如果target.foreignkey = source.foreignkey AND target.model = source.model然后什么也不做
  2. 如果(外键,模式)的目标并不在源存在,则删除该行
  3. 如果(外键,型号)在源并不在目标存在,然后将其

到目前为止,我有这样的:

create procedure Merge_lom_problem 
as 
merge [dbo].lom_problem as target 
using temp.lom_problem as SOURCE 
on (target.lom_number = SOURCE.lom_number) 
when matched and (target.problem <> SOURCE.problem) 
insert (lom_number,problem) values (SOURCE.lom_number,SOURCE.problem) 
when matched and 

但是我遇到了#2和#3的麻烦。

你能帮忙编码吗?

+0

或许,这将有很大的帮助,如果你的表样地匹配您的SQL。 Lom_problem是PK还是Lom_number? –

+0

@conrad很抱歉!谢谢你注意到这一点。 lom_number是FK –

+0

@ConradFrix你在那里我的朋友。请 –

回答

0

第一个问题你说什么都没做对吧?

试试这个

create procedure Merge_lom_problem 
as 
merge [dbo].lom_problem as target 
using temp.lom_problem as SOURCE 
on (target.lom_number = SOURCE.lom_number) 
--when matched and target.problem = SOURCE.problem then 

when not matched by source then 
DELETE 

when not matched by target then 
insert (lom_number,problem) values (SOURCE.lom_number,SOURCE.problem) 

,但我真的不知道它会工作,因为我还没有测试