Flutter中使用sqflite执行Update查询算术操作失败求助
在Flutter的sqflite中执行算术更新操作的正确方式
你当前的写法会把'Column+1'当成普通字符串赋值给字段,所以没有执行算术运算。sqflite的batch.update()方法不支持直接在值参数中写SQL表达式,要实现字段自增这类算术操作,需要用batch.rawUpdate()来执行原生SQL语句。
正确代码示例:
Batch batch = db.batch(); // 用rawUpdate执行算术更新,若表名/字段名是SQL关键字,需加反引号包裹 batch.rawUpdate('UPDATE `table` SET `Column` = `Column` + 1'); // 提交批量操作 await batch.commit();
如果需要筛选特定行更新,可添加WHERE条件:
batch.rawUpdate('UPDATE `table` SET `Column` = `Column` + 1 WHERE id = ?', [1]);
核心原因:update()方法的第二个参数是键值对,所有值都会被当作参数绑定为普通数据(字符串/数值),不会被解析为SQL表达式;而rawUpdate()允许直接编写完整SQL语句,让数据库引擎解析执行算术运算逻辑。
内容的提问来源于stack exchange,提问作者Raj Maheshwari
相关产品推荐
相关产品推荐

