想要知道“UPSERT”操作是否执行了 INSERT 或 UPDATE

Apa*_*dos 4 mysql insert update

我有一个查询,我尝试插入一条记录并准备更新以防记录存在。

问题是我想知道,一旦执行查询,该操作是更新还是插入。

任何想法?

joa*_*olo 6

根据MySQL 文档

使用 ON DUPLICATE KEY UPDATE 时,如果该行作为新行插入,则每行受影响的行值为1 ;如果更新现有行,则每行受影响的行值为2 ;如果现有行设置为其当前值,则每行受影响的行值为0 。如果在连接到 mysqld 时向 mysql_real_connect() 指定 CLIENT_FOUND_ROWS 标志,则当现有行设置为其当前值时,受影响的行值为 1(而不是 0)。

因此,如果您的语句仅影响一行,并且受影响的行数为1,那么它是一个INSERT; 否则,一个UPDATE. 要使用 PDO 检索受影响的行数,请使用rowCountmethod.