【发布时间】:2018-08-31 16:38:14
【问题描述】:
在我的应用程序中,当我向 mysql 提交 UPDATE 查询时,可能会出现三种结果。
(1) 找到并更新一个匹配行
(2) 找到一个匹配的行,但更新没有效果,因为它没有改变任何东西
(3) 没有找到匹配的行。
Pymysql 的 cursor.execute() 函数返回受影响的行数:情况 (1) 为 1,情况 (2) 和 (3) 为 0。
我可以在不先进行额外查询以查看该行是否存在以及更新是否会影响它的情况下区分情况(2)和(3)吗?换句话说,除了受影响的行数,我还能得到匹配的行数吗?
【问题讨论】:
-
我认为 MySQL 服务器没有提供任何区分它们的方法。
-
您可以在表格中添加一个额外的列吗?您可以将
new_column = new_column + 1放入更新中,这样它将始终修改匹配的行。 -
或者如果你有一个时间戳列,你可以这样做
timestamp = now() -
Barmar -- 我喜欢时间戳的想法。谢谢!