【问题标题】:How to get number of duplicates using a transaction?如何使用事务获取重复数?
【发布时间】:2015-12-21 15:47:49
【问题描述】:

我的代码:

$transaction = Yii::app()->db->beginTransaction();
    try {

        $command->execute();
        $transaction->commit();

    } catch (Exception $e) {
        $transaction->rollback();
        die($e->getMessage());
    }

我在 mysql 表中使用索引,那么我如何才能捕获实际插入的行数和重复的行数。

【问题讨论】:

  • 做这样的事情真是太糟糕了。如果您想检查表中已有多少数据,请使用示例查询,例如 COUNT()id IN()。如果您不想检查行是否存在,请使用INSERT ... ON DUPLICATE KEY UPDATE。在大数据上,您的方法将导致大量负载和时间问题。

标签: php mysql indexing yii


【解决方案1】:

假设您的command 是多行INSERT IGNORE,那么rows_affected 将说明成功插入了多少行。您的代码应该已经知道您尝试插入的行数。差异可能是具有“重复键”的行数。

小心。如果您使用AUTO_INCREMENT,它可能会增加尝试的行数,从而“烧毁”一些id。

【讨论】:

    猜你喜欢
    • 2022-01-04
    • 2017-08-17
    • 2018-06-04
    • 2015-11-08
    • 2012-12-12
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多