0

我需要知道在提交更改之前在事务中更改了哪些值。是否可以获得原始值(不是未提交的值?)。例如(虚构代码):

try {
    $pdo->beginTransaction();
    $pdo->exec('UPDATE items SET name = :name, text = :text WHERE id = :id', $newData);

    //If the update was fine:
    $oldData = $pdo->query('SELECT * FROM items WHERE id = :id LIMIT 1', array(':id' => $newData['id']);

    $diff = array_diff_assoc($newData, $oldData);

    echo 'Item was update successfully with new values in '.implode(', ', array_keys($diff));

    $pdo->commit();

} catch (Exception $E) {
    echo 'something is wrown';

    $pdo->rollBack();
}

在事务中选择数据时,此数据是更改后的数据,而不是原始数据。mysql中有什么选项可以跳过这个吗?

4

1 回答 1

2

在事务内部,一切都像在发送 q 查询时所做的更改一样工作。您唯一的解决方法是:

  • 开始交易,
  • 选择您需要的值,
  • 将它们保存在 PHP 变量中,
  • 执行你的工作,
  • 再次选择,
  • 相比,
  • 承诺与否。

如果您只需要测试更新是否成功,那么只需捕获错误就足够了。

于 2013-07-03T13:42:37.587 回答