如何使用ON DUPLICATE KEY UPDATE?

时间:2017-04-20 05:56:58

标签: mysql on-duplicate-key

下面是表格:item_id是PrimaryKey和AUTO INCREMENT,item_code是UNIQUE

| item_id | item_code | item_name |
-----------------------------------
|    1        A001        Apple   |
|    2        A002        Orange  |
-----------------------------------

Private Sub Model_Insert(fields As String())
    Dim query As String = "INSERT INTO main_item(item_code,item_name,item_desc,item_unitprice,item_barcode,dept_id,cat_id,gst_id,set_item,active)" &
                          "VALUES (@item_code,@item_name,@item_desc,@item_unitprice,@item_barcode,@dept_id,@cat_id,@gst_id,@set_item,@active)" &
                          "ON DUPLICATE KEY UPDATE 
                           item_code=VALUES(@item_code),
                           item_name=VALUES(@item_name),
                           item_desc=VALUES(@item_desc),
                           item_unitprice=VALUES(@item_unitprice),
                           item_barcode=VALUES(@item_barcode),
                           dept_id=VALUES(@dept_id),
                           cat_id=VALUES(@cat_id),
                           gst_id=VALUES(@gst_id),
                           set_item=VALUES(@set_item),
                           active=VALUES(@active)"

    Using cmd = New MySqlCommand(query, conn)
        cmd.Parameters.AddWithValue("@item_code", fields(0).Trim)
        cmd.Parameters.AddWithValue("@item_name", fields(1).Trim())
        cmd.Parameters.AddWithValue("@item_desc", fields(2).Trim())
        cmd.Parameters.AddWithValue("@item_unitprice", fields(3).Trim())
        cmd.Parameters.AddWithValue("@item_barcode", fields(4).Trim())
        cmd.Parameters.AddWithValue("@dept_id", fields(5).Trim())
        cmd.Parameters.AddWithValue("@cat_id", fields(6).Trim())
        cmd.Parameters.AddWithValue("@gst_id", fields(7).Trim())
        cmd.Parameters.AddWithValue("@set_item", fields(8).Trim())
        cmd.Parameters.AddWithValue("@active", fields(9).Trim())

        Dim numInserted = cmd.ExecuteNonQuery()
    End Using
End Sub
  

其他信息:您的SQL语法有错误;校验   与您的MariaDB服务器版本对应的手册   正确的语法在''A001'附近使用),item_name = VALUES('Kopi'),'在第2行

当我尝试插入具有相同item_code但不同的item_name的记录时出现此错误,我想保留item_code但用新值替换其他列。

0 个答案:

没有答案