小编典典

MySqlCommand.LastInsertedId如何工作?

sql

在我的一个项目中,我必须从数据库中获取最后插入的ID,以便无需SELECT * FROM my_db;查询即可将新插入的数据与内存中的数据同步,即我正在执行SELECT * FROM my_db WHERE id=new_index

现在,我知道我正在使用的MySQL支持该查询select last_insert_id();,因此我认为只需执行该命令即可。但是,在深入研究C#(我用于该项目的编程语言)后,我发现那里MySqlCommand有一个LastInsertedId领域。

现在令我感到困惑的是,我期望该字段的getter会执行相同的select last_insert_id();查询,但是在查看来自MySQL的日志时,我根本看不到有这样的查询。

所以我的问题是,MySqlCommand.LastInsertedId当MySQL服务器自动生成ID时,我怎么知道该ID分配给我要插入的元组?


阅读 261

收藏
2021-04-28

共1个答案

小编典典

当MySQL服务器在UPDATE查询后响应客户端软件(在您的情况下为Connector /
Net)时,它将通过tcp(或套接字)连接发送所谓OK_Packet的信息。该数据包包含last_insert_id值。

在服务器上,它可用于任何INSERT查询,而无需其他查询,因此,有线协议处理程序会将其放入响应包中。

客户端软件从数据包中提取该值,然后通过LastInsertedId属性将其提供给您的应用程序软件。

2021-04-28