我有一個用 Express 和 MariaDB 撰寫的 API 作為 DBMS,我正在嘗試使用陣列同時更新多個記錄,但它不起作用。例子:
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
我對 Insert 端點做了類似的事情,在那里我也使用陣列進行批量插入,效果很好:
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])
關于如何讓批量更新部分作業的任何想法?
uj5u.com熱心網友回復:
根據您在問題中提出的錯誤,第二個“?” 沒有接地。如果您查看錯誤,您會看到第一個值集基于資料變數,但第二個值不是。
如果您希望將資料接地到“?” 在您的陳述句中,那么您可能需要將資料變數添加到您的陳述句中兩次。
此外,您可能無法將資料變數接地兩次。我沒想到;您應該能夠在我們的陳述句中兩次使用 data 變數。如果您需要不同的變數,則創建第二個變數,將資料復制到第二個變數中,然后在陳述句中將這兩個變數都接地。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/328292.html
