2017-10-17 43 views
0

任何人都可以幫助我解決我的查詢。我想更新我的數據,如果syscode不存在,但當我嘗試更新sysdesc它失敗,因爲syscode已經存在。如果不存在vb.net更新

Dim query As String 
    Dim rowsAffected As Integer 
    query = "UPDATE tbl_sysname SET syscode = @code, sysdesc = @desc " & _ 
     "WHERE id = @id AND NOT EXISTS (SELECT syscode FROM tbl_sysname WHERE " & _ 
     "syscode = @code) " 

    cmd = New SqlCommand(query, cn) 
    cmd.Parameters.Add("@code", SqlDbType.VarChar).Value = txtCode.Text 
    cmd.Parameters.Add("@desc", SqlDbType.VarChar).Value = txtDesc.Text 
    cmd.Parameters.Add("@id", SqlDbType.VarChar).Value = lblId.Text 

    rowsAffected = cmd.ExecuteNonQuery 
    'MsgBox(rowsAffected) 

    If rowsAffected >= 1 Then 
     'reader = cmd.ExecuteReader 
     MsgBox("Update Successfully") 
     LVSysName.Items.Clear() 
     'reader.Close() 
     GetLvData() 'This will display the data of LvSysName 
    Else 
     MsgBox("Failed to Update") 
    End If 

我想避免在同一時間,我可以更新sysdescsyscode重複。 幫我解決我的查詢或給我一個建議,我應該怎麼做

+1

爲什麼'sysdesc'的更新受到'syscode'的影響? –

+0

當我更新'sysdesc''rowsAffected'將返回0因爲'NOT EXIST'函數 –

+0

沒問題,所以即使數據庫中存在'syscode',你想更新'sysdesc'? –

回答

0

你需要使用兩個UPDATE這個語句。沒有辦法一氣呵成。

UPDATE tbl_sysname 
SET syscode = @code 
WHERE id = @id AND 
    NOT EXISTS (SELECT syscode FROM tbl_sysname WHERE syscode = @code) 

UPDATE tbl_sysname 
SET sysdesc = @desc 
WHERE id = @id 
相關問題