dongzhina7098 2012-09-21 00:43
浏览 45
已采纳

理解sql错误和自动增量值中的pdo rollback()

i have a question...

Im using pdo and beginTransaction() but i dont understand some things.

My SQL table have 3 columns : id(autoincrement), username(unique), and password

And in my code i have this:

$pdo->beginTransaction();
$prepared = $pdo->prepare("INSERT INTO (username,password) VALUES(?,?)");
$prepared->$pdo->bindParam(1,"stefan");
$prepared->bindParam(2,"111111");
$prepared->execute();
$count= $prepared->rowCount();

if($count === FALSE):
    $pdo->rollback();
    var_dump($prepared->errorInfo());
else:
    $pdo->commit();
    echo "row count: {$count}";
endif;

When i execute this code, all works fine, generates id=1, username="stefan" and password="111111".

Now, I am generating an error on purpose to test rollback() function. I tried to insert same data 4 times in a row and i got unique error in $prepared->errorInfo().Works fine too.

The problem is, when im insert a new record after those 4 errors (for example, username="luv", password="222222") this new record has been inserted, but with ID=6 and not ID=2.

That is ok? rollback() should not leave the autoincrement at the last value that was correct? I miss something?

Thanks for help.

  • 写回答

1条回答 默认 最新

  • doulingna9420 2012-09-21 02:13
    关注

    auto inc values get "burned" when you do rollbacks. this is normal and expected.

    reference this stackoverflow entry

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 怎么改成循环输入删除(语言-c语言)
  • ¥15 安卓C读取/dev/fastpipe屏幕像素数据
  • ¥15 pyqt5tools安装失败
  • ¥15 mmdetection
  • ¥15 nginx代理报502的错误
  • ¥100 当AWR1843发送完设置的固定帧后,如何使其再发送第一次的帧
  • ¥15 图示五个参数的模型校正是用什么方法做出来的。如何建立其他模型
  • ¥100 描述一下元器件的基本功能,pcba板的基本原理
  • ¥15 STM32无法向设备写入固件
  • ¥15 使用ESP8266连接阿里云出现问题