Mysql2中如何获取更新行的指定字段(如image字段)
解决UPDATE后获取目标字段的问题
方案一:使用MySQL 8.0.19+的RETURNING子句
从MySQL 8.0.19版本开始,支持在UPDATE语句后追加RETURNING子句,直接返回更新后行的指定字段。修改代码如下:
const [result] = await DB.execute( "UPDATE `users` SET `email` = ? RETURNING `image`", [email] ); console.log(result[0].image); // 此处可直接获取更新后的image字段值
执行后返回的result里会包含更新行的image数据,不再只有操作状态信息。
方案二:先更新再查询(兼容低版本MySQL)
如果你的MySQL版本低于8.0.19,只能拆分操作:先执行UPDATE,再执行SELECT查询目标字段。为了避免两次操作间数据被其他请求修改,建议用事务包裹:
// 开启事务 await DB.beginTransaction(); try { // 执行更新操作 await DB.execute("UPDATE `users` SET `email` = ?", [email]); // 查询更新后的image字段(注意:这里用email查询的前提是email是唯一字段,否则请用用户ID等唯一标识) const [rows] = await DB.execute("SELECT `image` FROM `users` WHERE `email` = ?", [email]); console.log(rows[0].image); // 提交事务 await DB.commit(); } catch (err) { // 出错则回滚事务 await DB.rollback(); throw err; }
内容的提问来源于stack exchange,提问作者Aasem Shoshari
相关产品推荐
相关产品推荐

