微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 在事务中使用mysql_insert_id()

如果我开始一个事务,并在其中生成多个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().'
MysqL_query("INSERT INTO test VALUES (NULL,'Dani')") or die(MysqL_error()); echo MysqL_insert_id().'
MysqL_query("INSERT INTO test VALUES (NULL,'Pesho')") or die(MysqL_error()); echo MysqL_insert_id().'
MysqL_query('COMMIT') or die(MysqL_error()); MysqL_query('SET AUTOCOMMIT=1') or die(MysqL_error());

这个简单代码输出是:

1
2
3

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

原文地址:https://www.jb51.cc/mysql/433041.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐