【问题标题】:SQL update not updating anythingSQL更新不更新任何东西
【发布时间】:2021-07-27 08:39:43
【问题描述】:

我正在尝试在满足特定条件时更新表中的值,但没有任何更新:

    if (req.headers['user-agent'].includes('HeadlessChrome') && (end - start <= 500))  {
        db.run("UPDATE tab SET var = '1234' WHERE var = '5678'",  (err) => {
            if(err) {
                return console.log(err.message); 
            }
        })
    }
    var query = "SELECT * FROM tab"
    db.all(query, (error, rows) => {
        ...

db.all(query..) 似乎只返回 UPDATE 之前的值,这让我认为 UPDATE 没有按应有的方式工作。我已经验证输入了 IF 语句。有什么想法吗?

【问题讨论】:

  • 尝试在更新回调中运行查找查询,数据库操作是异步的
  • 我该怎么做?我不确定回调是如何工作的。
  • 您使用的是哪个数据库?例如,Oracle 需要 COMMIT TRANSACTION 来保留任何更改。您是否验证了表 tab 实际上包含带有 var = '5678' 的行?您是否直接在数据库的命令行或应用程序之外的其他环境中尝试过?
  • 是的,我调用了一个 db.all(query),它从该表中选择每个值并将其打印出来,5678 就在那里。我正在使用 sqlite3。
  • 值得注意的是,这是虚拟数据 - 真实数据类似于 test{1234_5678},我想用 test{5678_1234} 替换它。

标签: javascript sql node.js database express


【解决方案1】:
db.run("UPDATE tab SET var = '1234' WHERE var = '5678'",  (err) => {
        if(err) {
            return console.log(err.message); 
        }
        var query = "SELECT * FROM tab"
        db.all(query, (error, rows) => { console.log(rows) }
    })

在更新回调中调用 db.all(query, (error, rows) 确保您正在查询更新的值

【讨论】:

    猜你喜欢
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多