Mysql 如何在重复密钥更新时使用?

Mysql 如何在重复密钥更新时使用?,mysql,on-duplicate-key,Mysql,On Duplicate Key,下表为:item_id为PrimaryKey且自动递增,item_代码为唯一 | item_id | item_code | item_name | ----------------------------------- | 1 A001 Apple | | 2 A002 Orange | ----------------------------------- Private Sub Model_Insert(field

下表为:item_id为PrimaryKey且自动递增,item_代码为唯一

| 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服务器版本相对应的手册 在第2行的“A001”附近使用正确语法,项目名称=值('Kopi'),'


当我尝试插入一条记录时,我遇到了这个错误,该记录具有相同的项目代码但项目名称不同,我想保留项目代码,但用新值替换其他列

更新部分中的
values()
需要列名称。要设置不同的值,请不要使用
values()
,而是使用值本身,例如
item\u code=@item\u code
@solarflar感谢问题已解决。