Knex.js - 如何使用表达式更新字段

ASA*_*SA2 6 mysql sql-update knex.js

我们如何让Knex创建以下SQL语句:

UPDATE item SET qtyonhand = qtyonhand + 1 WHERE rowid = 8
Run Code Online (Sandbox Code Playgroud)

我们目前正在使用以下代码:

knex('item')
    .transacting(trx)
    .update({qtyonhand: 10})
    .where('rowid', 8)
Run Code Online (Sandbox Code Playgroud)

但是,为了使我们的库存应用程序在多用户环境中工作,我们需要使用qtyonhand值来添加或减去当时数据库中实际的内容,而不是在更新语句时传递可能过时的值.执行.

Mik*_*stö 21

这有两种不同的方式

knex('item').increment('qtyonhand').where('rowid',8)
Run Code Online (Sandbox Code Playgroud)

要么

knex('item').update({
  qtyonhand: knex.raw('?? + 1', ['qtyonhand'])
}).where('rowid',8)
Run Code Online (Sandbox Code Playgroud)