如何让 mysql 在没有匹配行的情况下在更新时抛出错误?

How to get mysql to throw an error on update for no rows matched?

我想知道 UPDATE 查询何时报告 0 行匹配。我正在使用 libmysql

这是我使用的代码:

char query[300] = {0};
snprintf(query, 300, "UPDATE `my_table` SET name='%s' WHERE id=%d",
         name, id);

if (mysql_query(db, query)) {
    printf("Error!\n");
}

基本上我需要知道的是是否有 id 的匹配项。我知道我可以通过 select 来检查,但是还有其他方法吗?

勾选mysql_affected_rows。这将 return 上次查询修改的行数。

但是,它可能 return 只是实际修改的行。如果要 return 匹配行,则必须在 mysql_real_connect 中指定 CLIENT_FOUND_ROWS。查看同一页面了解详情。