为什么受影响的行在更新/删除成功时返回0?

时间:2016-12-21 03:29:58

标签: mysql node.js express

我有陈述:

INSERT INTO infotbl(name, phone) VALUES('Alex', '9999999');

并更新它:

UPDATE infotbl SET name = 'Alex Johnes', phone = '999 34356063' WHERE id = 1;

然后删除:

DELETE FROM infotbl WHERE id = 1;

我已成功插入,当我更新和删除行时,MySQL已发生变化。但我在Node中的代码返回受影响的行= 0.为什么?在Node中有我的更新和删除功能:

function deleteCustomer (id, callback) {
        db.connection.query("DELETE FROM infotbl WHERE id=?", id, (err, result) => {
            if (err) throw err;
            if (result.affectedRows > 0)
                callback(true);
            else
                callback(false);
        });
    };

并更新功能

function updateCustomer(id, name, phone, callback) {
    db.connection.query("UPDATE infotbl SET name = ?, phone = ? WHERE id = ?;", [name, phone, id], (err, result) => {
        if (err) throw err;
                if (result.affectedRows > 0)
                    callback(true);
                else
                    callback(false);
});
}

为什么节点在数据库成功执行后返回0受影响的行?

1 个答案:

答案 0 :(得分:1)

最可能的解释是没有行满足UPDATE和DELETE语句中的条件。也就是说,没有id值等于1的行。

如果条件与一行或多行匹配,UPDATE可能会影响零行,但应用于行的更改会导致"无更改" ...即,正在修改的列已具有值被分配。

成功执行但影响零行的UPDATE或DELETE仍被视为成功。