【问题标题】:Laravel Update get updated idsLaravel 更新获取更新的 id
【发布时间】:2018-10-05 05:26:59
【问题描述】:

如果我有 Laravel eqoquent 模型(或纯 mysql)并且我尝试更新 10 条记录:

UPDATE users SET active = 1 WHERE is_admin IN (2,3);

我如何知道哪些记录已更新。

MySQL 中是否有任何函数可以返回更新后的 id。

我需要他们

谢谢

【问题讨论】:

  • 你为什么需要知道这个?
  • 这不是线程保存。如果多个线程(进程)使用一个连接,则不保存
  • 例如,我需要向用户显示更新了哪些记录。
  • 我建议不要在多个线程之间(同时)共享一个连接,因为这本身通常被认为是不安全的。如果连接已关闭并放回池中,然后再用于不同的线程,因为一次只有一个线程在使用会话。

标签: mysql


【解决方案1】:

不,mysql 中没有函数可以返回已更新记录的 id。为什么?因为您已经知道要更新哪些记录:那些与您的 update 查询的 where 条件相对应的记录。只有一个函数可以通过您的查询告诉您how many records got affected

如果您想确切地知道您的查询更新了哪些记录,那么您需要在更新之前查询可以更新的记录的字段和ID,然后比较更新后的值。值发生变化的地方,就是那些被更新的记录。

或者,您可以将时间戳列添加到表中,如果记录更新,该列会被修改。更新后可以查询更新了哪些记录。

【讨论】:

  • 我知道想要的行为吗?是的,我愿意,但我想知道哪些记录已更新?我需要身份证
  • 这会导致 3 个查询和逻辑用于在所有地方进行比较,在 PostGre 中,您有 RETURNING id;这不仅仅是酷。但是在 MySQL 中......
  • 如果您坚持,可以尝试 ThatGuyInIT 的重复主题提案中建议的解决方案。
  • 谢谢。会尝试,为什么它必须在 mysql 中比 postgre 更难
  • 您通常不需要知道更新了哪些记录,所以我可以理解为什么这不是 mysql 的优先事项。
猜你喜欢
  • 2023-03-22
  • 1970-01-01
  • 2012-06-11
  • 1970-01-01
  • 1970-01-01
  • 2014-05-09
  • 2013-05-11
  • 2011-06-28
  • 2013-12-17
相关资源
最近更新 更多