使用Express.js更新SQLite表时遭遇FOREIGN KEY约束失败问题
问题:更新数据库记录触发FOREIGN KEY约束失败
尝试更新tickets表的部分记录时,反复触发FOREIGN KEY constraint failed错误,但数据库连接正常(新增记录功能可正常使用)。另外一个奇怪的现象是,批量更新两条记录时,只有第一条能成功完成更新。
后端代码如下:
module.exports = function (server, db) { // function to insert object to db function insertTickets(ticket) { const stmt = db.prepare( "UPDATE tickets SET userid=?, concertid=?, booked=? WHERE ticketid=?" ); stmt.run(ticket.ticketid, ticket.userid, ticket.concertid, ticket.booked); console.log(stmt); } server.put("/data/tickets", (request, response) => { const tickets = request.body; console.log(request.body); try { tickets.forEach((ticket) => { insertTickets(ticket); }); response.send("tickets inserted to database"); } catch (e) { console.error(e); } }); };
待更新的数据数组:
const tickets = [ {ticketid: 1, userid: 1, concertid: 1, booked: 1}, {ticketid: 3, userid: 1, concertid: 1, booked: 1}]
问题解决
将UPDATE语句中的concertid=?字段移除,同时删掉对应的参数传递后,问题得到解决。
内容的提问来源于stack exchange,提问作者lbs91
相关产品推荐
相关产品推荐

