当前位置: 首页 > 面试题库 >

LAST_INSERT_ID()MySQL

鞠边浩
2023-03-14
问题内容

我有一个MySQL问题,我认为这很容易。当我运行以下MySql查询时,我需要从table1返回LAST INSERTED ID:

INSERT INTO table1 (title,userid) VALUES ('test',1); 
INSERT INTO table2 (parentid,otherid,userid) VALUES (LAST_INSERT_ID(),4,1);
SELECT LAST_INSERT_ID();

如您所知,当前代码只会返回table2的LAST INSERT ID而不是table1,即使我插入到table2之间,也如何从table1获取ID?


问题答案:

您可以将最后一个插入ID存储在变量中:

INSERT INTO table1 (title,userid) VALUES ('test', 1); 
SET @last_id_in_table1 = LAST_INSERT_ID();
INSERT INTO table2 (parentid,otherid,userid) VALUES (@last_id_in_table1, 4, 1);

或获取max id frm table1

INSERT INTO table1 (title,userid) VALUES ('test', 1); 
INSERT INTO table2 (parentid,otherid,userid) VALUES (LAST_INSERT_ID(), 4, 1); 
SELECT MAX(id) FROM table1;


 类似资料:
  • 问题内容: 我有一个简单的MYSQL问题。如果我让包含查询 LAST_INSERT_ID() 右后一个 INSERT查询 一个网页,有许多并发用户访问执行其它网页上运行的 INSERT 操作将价值 LAST_INSERT_ID() 是掺假/损坏? 问题答案: 不,它将返回当前连接的插入ID。只要您的脚本没有进行任何其他插入,就可以得到想要的插入。 另请注意,这只会返回生成的ID(例如,自动递增)。

  • 问题内容: 现在在phpMyAdmin中工作: 表结构: 该表当前有4行数据,具有不同的OrderID。 SQL: 结果: 我期待第四行-只是一个数字,但是phpMyAdmin中的每一行都有一个0。 问题答案: 返回最后插入的行的ID,并且未绑定到任何表。因此,如果您创建一个新行: 它将返回最后一个id(新主键具有的任何值)。 有关详细信息,请查看 手册 : LAST_INSERT_ID()(不带

  • 问题内容: 据我了解,当您调用last_insert_id()时,它是通过连接进行的,因此您将获得插入到调用last_insert_id()的同一连接中的最后一行的ID,对吗? 那么,如果我在“ AFTER INSERT”触发器中调用last_insert_id()怎么办? 我想做的基本上是这样 “ anothertable”中的id与“ sometable”中的id非常重要,这是否可行?还是应该

  • 问题内容: 我试图使一些MSSQL代码也可以在MYSQL上运行,而我只是碰到了这个地雷。谷歌表示,通常的方法是简单地进行插入,然后选择last_insert_ID()来查找所写的内容。 但是,这在多用户环境中并不令我感到安全。那里有一个狭窄的窗口,另一个用户可以在其中插入一些东西并导致错误的返回值。如何 安全 插入并获取插入记录的密钥? 问题答案: https://dev.mysql.com/do

  • 我正在尝试制作一些SQL 不过,我觉得这在多用户环境中并不安全。那里有一个狭窄的窗口,另一个用户可以在那里插入一些东西,并导致一个错误的返回值。如何安全地插入并获取插入记录的密钥?

  • 问题内容: 好的。简而言之,我正在尝试执行INSERT SELECT,例如: 当然,@key不会从每个插入中返回每个后续的LAST_INSERT_ID(),而是仅从最后一个插入返回ID。 基本上,我将旧的USER表拆分为ENTITY和USER,例如: 我为什么要这样做?基本上,我有一个“商店”实体,它将具有“用户”公用的字段,例如地址和电话号码。因此,任何“ ENTITY”都可能没有多个地址(送货