2011-11-01 166 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) 

,但我真的不知道它會工作,因爲我還沒有測試