【问题标题】:Is it possible to get the ID of the row being inserted *in the statement*?是否可以获得*在语句*中插入的行的 ID?
【发布时间】:2014-07-19 06:58:14
【问题描述】:

我想让我上传的图片以它所属行的 ID 作为名称(例如42.jpg)以确保唯一性。

是否有可能在查询中间得到这个?还是我必须在更新行之后获取 ID?

【问题讨论】:

  • 如果它总是等于id - 为什么要存储两次?
  • 如果您想要唯一性,请使用 GUID。
  • 您是否存储了 BLOB 或文件名路径?
  • 这可能不是个好主意。

标签: php mysql sql


【解决方案1】:

您可以先插入一个空行(带有null 图像和文件名。)您可以使用LAST_INSERT_ID() 检索最后插入的ID。

之后,您可以根据 ID 使用图像和文件名更新行。

【讨论】:

    【解决方案2】:

    如果id 是您要插入的表中的 AUTO_INCREMENT 列...不,自动分配的值在语句执行期间不可用。当触发BEFORE INSERT 触发器时,该值不可用。

    分配给行的值仅在INSERT 语句完成后可用。

    在插入成功后,SELECT LAST_INSERT_ID()(等效库函数)可以立即检索分配的值。

    作为另一种选择,您可以考虑使用具有 AUTO_INCREMENT 列和 LAST_INSERT_ID 的单独表来模拟 Oracle 序列对象。如果您在执行 INSERT 之前将其作为唯一 ID,则可以在 INSERT 中提供该值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-14
      相关资源
      最近更新 更多