MySQL的获取刚刚插入的行(Mysql fetch the row just inserted)

2019-10-18 09:44发布

所以我设计插入行到MySQL数据库的功能。 该表有自动递增主键启用。 所以我不插入此列的值。 但是PK是整个表的只有唯一的列。 我怎样才能获取我刚插入的行?

我没有看到一个问题,如果该功能是在路况,但是当它的负荷越来越重,我可以看到一个潜在的错误:说我插入行和DB的AI值是1,则取前功能启动以请求“最新插入的行”,另一行被插入与所述AI值2现在,如果插入1行驶的取功能,行2将获取。 我知道时间不足部分就需要设置得太小,让这个错误实际存在,但有没有更好的办法来获取正确的行,而只保留具有PK作为唯一列的表? (我不希望实现一个额外的校验列,但我看到它是一个潜在的解决方案。)

Answer 1:

它不是很合逻辑,但你可以:

insert into `table1` (`column1`,`column2`,`column3`) VALUES ("value1","value2","value3");
select * from `table1` where `PK`=LAST_INSERT_ID();

相反,你应该只SELECT LAST_INSERT_ID(); 作为尔根ð建议并重新使用的其他数据



Answer 2:

请仔细阅读本PHP函数mysqli_insert_id()

很抱歉的上面,我傻傻的以为你是使用PHP。 MySQL也有一个本地LAST_INSERT_ID()函数。

被生成的ID被保持在基于每个连接的基础服务器。 这意味着,由该函数返回给定的客户价值是最近影响该客户端AUTO_INCREMENT列最语句生成的第一AUTO_INCREMENTvalue。 这个值不能被其它客户端影响,即使它们产生它们自己的AUTO_INCREMENT值。 这种行为确保每一个客户都能无其他客户的活动关注找回自己的ID,而无需锁或交易。

参考; http://dev.mysql.com/doc/refman/5.5/en/information-functions.html#function_last-insert-id



文章来源: Mysql fetch the row just inserted