首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在重复键更新查询中知道一行是否已更新或插入

如何在重复键更新查询中知道一行是否已更新或插入
EN

Stack Overflow用户
提问于 2014-10-28 21:30:09
回答 2查看 699关注 0票数 3

我需要插入表或更新值。

我需要知道数据是更新的还是新创建的。

目前我的逻辑是SELECT,如果不存在INSERT,如果存在UPDATE

我需要计算已更新的行和插入的行。

这很慢,我需要一种更快的方法:我可以使用INSERTREPLACE而不尝试先选择,然后让PDO客户机返回行是更新的还是插入的?

我使用的是PHP / PDO / MySQL

用伪代码更新

当前逻辑:

代码语言:javascript
复制
<?php
$rowExists = PDO SELECT by key

if ($rowExists)
    PDO UPDATE by key
    $updates++
else
    PDO INSERT
    $inserts++

通缉逻辑:

代码语言:javascript
复制
<?php
PDO INSERT .. ON DUPLICATE KEY
$updates++ or $inserts++ according to what it actually did
EN

回答 2

Stack Overflow用户

发布于 2014-10-28 21:35:04

如果使用ON DUPLICATE KEY UPDATE,可以剪切一个步骤(选择)。因此,这将只是一个查询。

以下是文件:

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

至于检查,下面是代码:

代码语言:javascript
复制
if($stmt->rowCount() > 0 ){
    if($stmt->lastInsertId() != 0){
        echo 'Row was inserted';
    }else{
        echo 'Row was updated';
    }
}else{
    echo 'row was neither updated or inserted';
}
票数 -1
EN

Stack Overflow用户

发布于 2014-10-28 21:36:06

如果表有主键或唯一索引,则需要“替换为”。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26618837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档