如何获取MYSQL中最后更新记录的主键?

时间:2010-12-23 17:05:51

标签: sql mysql database

我们知道主键是否是自动更新,SELECT语句可以返回我需要的内容。 UPDATE怎么样?

使用last_insert_id是线程安全的吗?

6 个答案:

答案 0 :(得分:2)

我认为last_insert_id不会对你有所帮助。您最好的选择是创建一个与更新相同的select语句,并解析结果。

答案 1 :(得分:1)

  

使用last_insert_id是线程安全的吗?

这是连接 -safe,这可能是你的意思。来自the docs

  

生成的ID是   维护在服务器上   每个连接基础。这意味着   函数返回的值   给定的客户是第一个   生成的AUTO_INCREMENT值   最近的声明影响了   该客户的AUTO_INCREMENT。   此值不受其他人的影响   客户,即使他们产生   AUTO_INCREMENT他们自己的价值观。   此行为可确保每个客户端   无需检索自己的ID   关心他人的活动   客户,而不需要   锁或交易。

(他们的重点。)

答案 2 :(得分:0)

为此,您创建一个新表操作跟踪,如果运行更新查询,则在此表中插入一条新记录

然后使用action id desc

获取此操作表中的记录

获取表中的时间戳字段,如果运行更新查询,则还要更新时间戳字段

然后获取最新的新时间戳字段

答案 3 :(得分:0)

除非您在记录的每个更新中重新访问MODIFIED_DATE类别的列,否则无法实现这一目标,以便跟踪您的上次修改日期以便订购就是这样。

答案 4 :(得分:0)

为了实现这一目标,你必须做两件事。

我现在可以想到的最佳解决方案, a)从表中选择具有相同where条件的PK,您将要更新。 b)用PK返回更新记录。

所有其他解决方案可能在某些时候失败。

答案 5 :(得分:0)

last_insert_id()不返回最近更新的行的id,它只返回最后插入行的id

根据您的选择,您首先选择select,如果它不存在insert,您可以使用last_insert_id(),如果它存在update则使用id {1}}从您的第一个select

返回