Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql获取刚刚插入的行_Mysql_Insert_Row_Primary Key_Fetch - Fatal编程技术网

Mysql获取刚刚插入的行

Mysql获取刚刚插入的行,mysql,insert,row,primary-key,fetch,Mysql,Insert,Row,Primary Key,Fetch,因此,我正在设计一个函数,将一行插入MySQL数据库。该表有一个启用了自动递增的主键。所以我不插入此列的值。但是PK是整个表中唯一唯一的列。如何获取刚刚插入的行 如果函数处于轻流量状态,我看不出有问题,但是当它的负载越来越重时,我可以看到一个潜在的错误:假设我插入了一行,DB的AI值为1,那么在fetch函数开始请求最新插入的行之前,会插入另一行,AI值为2。现在,如果Insert 1的fetch函数运行,那么将获取第2行。我知道时间间隔需要非常小才能允许这个bug实际存在,但是有没有更好的方法

因此,我正在设计一个函数,将一行插入MySQL数据库。该表有一个启用了自动递增的主键。所以我不插入此列的值。但是PK是整个表中唯一唯一的列。如何获取刚刚插入的行


如果函数处于轻流量状态,我看不出有问题,但是当它的负载越来越重时,我可以看到一个潜在的错误:假设我插入了一行,DB的AI值为1,那么在fetch函数开始请求最新插入的行之前,会插入另一行,AI值为2。现在,如果Insert 1的fetch函数运行,那么将获取第2行。我知道时间间隔需要非常小才能允许这个bug实际存在,但是有没有更好的方法来获取正确的行,同时保持表中只有PK作为唯一列?我不想实现额外的校验和列,尽管我认为这是一个潜在的解决方案。

请阅读此php函数

很抱歉,我愚蠢地认为您使用的是php。MySQL还有一个本机的LAST_INSERT_ID函数

生成的ID在服务器中按每个连接进行维护。这意味着函数返回给给定客户机的值是为影响该客户机自动增量列的最新语句生成的第一个自动增量值。此值不受其他客户端的影响,即使它们生成自己的自动增量值。此行为确保每个客户端都可以检索自己的ID,而不必关心其他客户端的活动,也不需要锁或事务


参考文献

请阅读此php函数

很抱歉,我愚蠢地认为您使用的是php。MySQL还有一个本机的LAST_INSERT_ID函数

生成的ID在服务器中按每个连接进行维护。这意味着函数返回给给定客户机的值是为影响该客户机自动增量列的最新语句生成的第一个自动增量值。此值不受其他客户端的影响,即使它们生成自己的自动增量值。此行为确保每个客户端都可以检索自己的ID,而不必关心其他客户端的活动,也不需要锁或事务


参考文献

这不太合乎逻辑,但您可以:

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

相反,您应该只选择最后一个插入ID;正如jurgen d所建议的那样,重复使用其他数据

不是很合乎逻辑,但您可以:

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

相反,您应该只选择最后一个插入ID;正如jurgen d建议的那样,重复使用其他数据

此处仅链接答案被视为低质量。请扩展您的答案或留下评论。顺便说一句,你甚至不知道这里是否使用了PHP。谢谢@amaster507,但是我们可以将答案限制在MySQL级别吗?@juergend很抱歉,我扩展了MySQL功能,并引用了参考资料中的一段话,这段话比我自己解释得更好。@JinStudio请直接从他们的文档中查看MySQL解决方案的修订答案和解释。此处仅链接的答案被认为是低质量的。请扩展您的答案或留下评论。顺便说一句,你甚至不知道这里是否使用了PHP。谢谢@amaster507,但是我们可以将答案限制在MySQL级别吗?@juergend抱歉,我扩展了MySQL功能,并引用了参考资料,这比我自己解释的更好。@JinStudio请直接从他们的文档中查看MySQL解决方案的修订答案和解释。选择LAST_INSERT_ID;请参见选择最后一个\u插入\u ID;再见,谢谢!正是我想要的!现在我又过上了幸福的生活。谢谢你!正是我想要的!现在我又过上了幸福的生活。