我们知道主键是否是自动更新,SELECT语句可以返回我需要的内容。 UPDATE怎么样?
使用last_insert_id是线程安全的吗?
答案 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