MySQL   发布时间:2022-05-15  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php – 在事务中使用mysql_insert_id()大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

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

@H_973_12@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().'@H_842_13@mysqL_query("INSERT INTO test VALUES (NULL,'Dani')") or die(MysqL_error());
echo MysqL_insert_id().'@H_842_13@mysqL_query("INSERT INTO test VALUES (NULL,'Pesho')") or die(MysqL_error());
echo MysqL_insert_id().'@H_842_13@mysqL_query('COMMIT') or die(MysqL_error());
MysqL_query('SET AUTOCOMMIT=1') or die(MysqL_error());

这个简单代码的输出是:

1
2
3

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

大佬总结

以上是大佬教程为你收集整理的php – 在事务中使用mysql_insert_id()全部内容,希望文章能够帮你解决php – 在事务中使用mysql_insert_id()所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: