Mysql 获取刚刚插入的行

标签 mysql insert row primary-key fetch

所以我正在设计一个函数,将一行插入到 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/

相关文章:

python - PySpark:向数据框行元素添加新字段

android:识别 ListView 行中的单个项目?

mysql - R 数据库连接错误

php - 从表中获取 NULL 值

mysql - 使用 laravel 更新日期时间列

sql-server - TSQL 触发器而不是插入

php - 将多选框选择发布到数据库,只添加第一个选择的项目

javascript - 使用 Ajax 从 mysql 获取行

asp.net - MySQL-使用未知值插入

html - 元素不会显示在同一行