加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

php – 在事务中使用mysql_insert_id()

发布时间:2020-12-11 23:48:12 所属栏目:MySql教程 来源:网络整理
导读:如果我开始一个事务,并在其中生成多个INSERT(pre-COMMIT),mysql_insert_id()似乎不会在每个之后更新. 这是预期的行为吗?如果是这样,我可以做些什么来获取我刚插入的东西的ID? 最佳答案你的假设是错误的.这是证明它的代码: mysql_query('CREATE TABLE `tes

如果我开始一个事务,并在其中生成多个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开头.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读