gpt4 book ai didi

PHP+MySQL+插入查询

转载 作者:行者123 更新时间:2023-11-29 14:41:56 26 4
gpt4 key购买 nike

嗨,我正在使用 php 和 mysql 实现事务。下面是我插入测试的代码,其中 id 是一个自动增量值。

try{
$dbh->beginTransaction();

$stmt = $dbh->prepare("INSERT INTO test(id,name) VALUES (?,?)")
$stmt->execute(array(null ,$Name));

-----
----- and some more queries

$dbh-> commit();
$dbh=null;
}

catch(Exception $e)
{
$dbh->rollBack();
$dbh=null;
}

我面临的问题是,每次由于某些异常而回滚事务时,下次运行查询时插入将根据上次运行时分配的自动增量值进行工作

例如:

运行 1:插入查询--id值为1,事务回滚

运行2:插入查询——尽管我之前的事务已回滚,但现在它的 id 值为 2

谁能帮我解决这个问题吗?

最佳答案

发生这种情况是因为自动增量值在所有事务之间共享,并且就其本质而言,它是 DDL,而不是 DML。因此它无法回滚(以及任何其他 DDL,如 TRUNCATEALTER 无法回滚)。

PS:自动增量 PK 是一个代理键,这意味着您不应该关心它保留什么值。您应该对它的独特性感到满意。就这样。如果您需要维护一些“顺序” - 创建另一个列并手动执行此操作。

关于PHP+MySQL+插入查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7815033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com