所以我正在设计一个函数,将一行插入到 MySQL 数据库中。该表有一个启用了自动增量的主键。所以我不插入此列的值。但是 PK 是整个表中唯一的唯一列。如何获取刚插入的行?
如果函数流量小,我看不出有什么问题,但是当它的负载越来越重时,我可以看到一个潜在的错误:假设我插入了一行并且 DB 的 AI 值为 1,那么在fetch 函数开始请求“最新插入的行”,另一行被插入,AI 值为 2。现在如果 Insert 1 的 fetch 函数运行,将获取第 2 行。我知道时间间隔需要非常小才能让这个错误真正存在,但是有没有更好的方法来获取正确的行,同时维护只有 PK 作为唯一列的表? (我不想实现额外的校验和列,尽管我认为这是一个潜在的解决方案。)
最佳答案
这不是很合逻辑,但你可以:
insert into `table1` (`column1`,`column2`,`column3`) VALUES ("value1","value2","value3");
select * from `table1` where `PK`=LAST_INSERT_ID();
相反,您应该只按照 jurgen d 的建议SELECT LAST_INSERT_ID();
并重用其他数据
关于Mysql 获取刚刚插入的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17797976/