gpt4 book ai didi

MySQL 存储过程和最后插入的行

转载 作者:行者123 更新时间:2023-11-29 05:35:56 24 4
gpt4 key购买 nike

我很好奇这是否可能。我有一个存储过程,它插入然后检索最后一个插入 ID。如果 2 个用户同时使用该程序怎么办,这样的情况可能吗?

 User 1
User 2
Insert 1
Insert 2
GetsLastid 2
GetsLastid 2

存储过程的 2 次调用是否可以交错插入查询的顺序?还是有人会带头?

谢谢!

最佳答案

这不是问题。来自fine manual :

The ID that was generated is maintained in the server on a per-connection basis. This means that the value returned by the function to a given client is the first AUTO_INCREMENT value generated for most recent statement affecting an AUTO_INCREMENT column by that client. This value cannot be affected by other clients, even if they generate AUTO_INCREMENT values of their own.

所以 last_insert_id() 值始终是每个 session (又名连接)并且你有两个 session 在玩,它们不能干扰彼此的 last_insert_id() 值。

也就是说,在 INSERT 之后尽快获取 last_insert_id() 值并将其存储在变量中是个好主意。如果您在背后执行其他操作 - 假设您调用另一个过程,该过程在两个月后添加了日志记录并且该日志记录执行了 INSERT - 您将丢失 last_insert_id() 值你想要的。

关于MySQL 存储过程和最后插入的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10560664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com