2014-01-26 78 views
-1

請與這一個幫助... 我想實現這個VB SQL代碼,代碼適用於更新,但無法爲插入...SQL如果要是那麼不匹配匹配更新插入

merge into anamneza a 
using (select ana_id from anamneza where ana_id = 2) e 
on (a.ana_id = e.ana_id) 
when matched then 
update set a.ana_kupanje = 'da' 
when not matched then 
insert (ana_rb,ana_id,ana_kupanje,ana_kosa,ana_brijanje,ana_zubi,ana_nokti,ana_odjeca,ana_koza,ana_dek_rizik,ana_dek_rizik_gdje,ana_dek_postojeci,ana_dek_post_gdje,ana_pokretnost,ana_kolica,ana_pomagala,azurirao,datumazur) 
values (1,1,'da','da','da','da','da','da','da','da','da','da','da','da','da','da','veki',getdate()); 

首先,我寫了一個SQLQuery並執行它,它說 (0 row(s)affected)

但是,當我插入該行,它有id = 1並更改選擇它匹配ana_id = 1它說(1行受影響);

爲什麼插入語句不起作用???

+0

[請重新考慮使用'MERGE'來解決這個問題](http://www.mssqltips.com/sqlservertip/3074/use-caution-with-sql-servers-merge-statement/)。 –

+0

它會返回一個錯誤嗎? –

+0

沒有錯誤只有0行受到影響,當我在執行時手動插入它更新字段... wierd –

回答

1

Using SQL Server MERGE command with same source & target table提出,通過更換您的MERGE語句行2:

using (
    select 1 as ana_rb, 1 as ana_id, 
      'da' as ana_kupanje, 'da' as ana_kosa, 'da' as ana_brijanje, 
      'da' as ana_zubi, 'da' as ana_nokti, 'da' as ana_odjeca, 
      'da' as ana_koza, 'da' as ana_dek_rizik, 'da' as ana_dek_rizik_gdje, 
      'da' as ana_dek_postojeci, 'da' as ana_dek_post_gdje, 
      'da' as ana_pokretnost, 'da' as ana_kolica, 'da' as ana_pomagala, 
      'veki' as azurirao, getdate() as datumazur 
) e 

注:確保值匹配在INSERT一部分!