无法使用 MariaDB、pool.query 和 Express 进行批量更新

Can't do bulk update using MariaDB, pool.query and Express

我有一个用 Express 和 MariaDB 作为 DBMS 编写的 API,我试图使用数组同时更新多条记录,但它不起作用。 示例:

const data = [ [ '2', '130' ], [ '4', '10' ] ]
try {
const updatedInventory = await pool.query('UPDATE inventory SET qty_shipped = qty_shipped + VALUES ? WHERE sku_id = VALUES ?', [data])
res.status(201).json(updatedInventory)
} catch (error) {
    res.status(500).json({ message: error.message })
    console.error(error.message)
}

但是我得到这个错误:

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'VALUES ('2', '130'), ('4', '10') WHERE sku_id = VALUES ?' at line 1

我对插入端点做了类似的事情,我也在使用数组进行批量插入,效果很好:

const newInventory = await pool.query('INSERT INTO inventory (sku_id, qty_received, expiration_date) VALUES ? ON DUPLICATE KEY UPDATE qty_received = qty_received + VALUES(qty_received) ', [data])

关于如何使批量更新部分正常工作有什么想法吗?

根据你在问题中的错误,第二个“?”没有接地。如果您查看错误,您会发现第一个值集基于数据变量,但第二个不是。

如果您希望将数据同时设置为“?”在你的陈述中,那么你可能需要将数据变量添加到你的陈述中两次。

另外,可能是你不能将数据变量接地两次。我不希望那样;你应该能够在我们的声明中使用数据变量两次。如果您需要不同的变量,则创建第二个变量,将数据复制到第二个变量中,然后将两个变量都放在语句中。