MySQL Batchupdate() with ON DUPLICATE KEY UPDATE



我使用batchUpdate()在表中插入多条记录。根据要求,如果在插入主键时存在重复值,则应该使用最新接收到的数据进行更新,因此我试图在INSERT语句中使用ON DUPLICATE KEY UPDATE。当我使用单个插入时,ON DUPLICATE KEY UPDATE工作良好,但当我使用batchupdate()进行相同的查询时,它会产生错误。错误如下:

Testcase: testVehicleTracking(com.em.ert.test.TrackingServiceTest): cause a ERRORPreparedStatementCallback;错误的SQL语法[INSERT INTO test_tracking (sino, material_id, material_type, vehicle_position, rundown_num, msg_type, msg_status, msg_timestamp) VALUES(?(?, ?, ?, ?, ?, ?)[重复键更新];嵌套异常是java.sql.BatchUpdateException:你有一个错误在你的SQL语法;查看与MySQL服务器版本对应的手册,了解在"at line 1

"附近使用的正确语法。

我不明白为什么ON DUPLICATE KEY UPDATE不能与batchupdate()一起工作。理想情况下应该如此,因为在我看来,在工作中没有什么不同。

我应该做些什么来实现这个目标?

您缺少列赋值 col_name = value ON DUPLICATE KEY UPDATE子句之后。


来自MySQL官方参考手册:

13.2.6 INSERT Statement

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]

13.2.6.2 INSERT…ON DUPLICATE KEY UPDATE语句

相关内容

  • 没有找到相关文章

最新更新