首页 MySql php – 在事务中使用mysql_insert_id()

php – 在事务中使用mysql_insert_id()

如果我开始一个事务,并在其中生成多个INSERT(pre-COMMIT),mysql_insert_id()似乎不会在每个之后更新.这是预期的行为吗?如果是这样,我可以做些什么来获取我刚插入的东西的ID?最佳答案你的假设是错误的.这是证明它的代码:mysql_query(CREATE TABLE `test` (

如果我开始一个事务,并在其中生成多个INSERT(pre-COMMIT),mysql_insert_id()似乎不会在每个之后更新.

这是预期的行为吗?如果是这样,我可以做些什么来获取我刚插入的东西的ID?

最佳答案
你的假设是错误的.这是证明它的代码:

mysql_query('CREATE TABLE `test` (
               `ID` int(10) unsigned NOT NULL AUTO_INCREMENT,`Name` varchar(255) NOT NULL,PRIMARY KEY (`ID`)
             ) ENGINE=InnoDB') or die(mysql_error());
mysql_query('SET AUTOCOMMIT=0') or die(mysql_error());
mysql_query('START TRANSACTION') or die(mysql_error());
mysql_query("INSERT INTO test VALUES (NULL,'Martin')") or die(mysql_error());
echo mysql_insert_id().'

这个简单代码的输出是:

1
2
3

有趣的是,即使您回滚事务(而不是提交它),结果也是相同的,并且这些ID的值将永远不会再次使用.所以下一个插入将以4开头.

本文来自网络,不代表青岛站长网立场。转载请注明出处: https://www.0532zz.com/html/shujuku/mysql/20201019/11551.html
上一篇
下一篇

作者: dawei

【声明】:青岛站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

【免责声明】本站内容转载自互联网,其发布内容言论不代表本站观点,如果其链接、内容的侵犯您的权益,烦请提交相关链接至邮箱xwei067@foxmail.com我们将及时予以处理。

Copygight © 2016-2023 https://www.0532zz.com All Rights Reserved.青岛站长网

站长:xwei067#foxmail.com(请把#换成@)