所以我正在设计一个函数,将一行插入 MySQL 数据库。该表有一个启用了自动增量的主键。所以我不插入该列的值。但PK是整个表中唯一唯一的列。如何获取刚刚插入的行?
如果该函数在流量较小的情况下我看不到问题,但是当其负载越来越重时,我可以看到一个潜在的错误:假设我插入了一行并且数据库的 AI 值为 1,然后在获取函数开始之前为了请求“最新插入的行”,将插入 AI 值为 2 的另一行。现在,如果运行 Insert 1 的获取函数,将获取第 2 行。我知道时间间隔需要非常小才能允许这个错误实际存在,但是有没有更好的方法来获取正确的行,同时维护表仅将 PK 作为唯一列? (我不想实现额外的校验和列,尽管我认为这是一个潜在的解决方案。)
这不太符合逻辑,但你可以:
insert into `table1` (`column1`,`column2`,`column3`) VALUES ("value1","value2","value3");
select * from `table1` where `PK`=LAST_INSERT_ID();
相反你应该只SELECT LAST_INSERT_ID();
正如尤尔根·d 建议的那样并重复使用其他数据
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)