【问题标题】:How can I use the auto increment value (primary key column) as part of another column in the same row when inserting that row? [duplicate]插入该行时,如何将自动增量值(主键列)用作同一行中另一列的一部分? [复制]
【发布时间】:2018-02-21 09:36:42
【问题描述】:

我正在向我的表中插入一个新行。是否可以在插入期间将主键(id)用作同一行中列值的一部分?例如,假设我刚刚插入了一个 id 为 6 的新行,是否可以让同一行中的 image_address 列类似于“folder/6”,其中 6 来自 id?这是在 INSERT 上。

表格
id(主键,自动递增)
image_address(我希望它包含 id)

【问题讨论】:

  • 这样做没有意义,您可以在查询数据时将两个值连接起来。

标签: mysql sql concatenation auto-increment


【解决方案1】:

正如其他人指出的那样,您可以在以后的调用中以编程方式使用 ID,这可能更有效。

但是,让我们假设您仍然想这样做(也许您稍后会将其加入其他数据,或者与一些不了解数据的人一起使用,等等)。

我会在两个命令中做到这一点。

首先,运行插入以生成 ID,并将“文件夹/”填写为 image_address 列的静态值。

其次,对新形成的表运行UPDATE 查询(或者如果您只是向现有表添加行,则可以UPDATEWHERE image_address = 'folder/'),在此更新中您可以修改image_address 字段通过将其与id 连接起来。

【讨论】:

    【解决方案2】:

    您可以在 INSERT 之后放置一个触发器,该触发器会更新 image_address 并使用新的 id。 但是,当您可以随时以编程方式重新创建“文件夹/6”路径时,您为什么要这样做呢?您可以在您的脚本或您的选择中执行此操作。例如:

    SELECT id, CONCAT('folder/',id,'/') as path FROM table
    

    【讨论】:

      猜你喜欢
      • 2012-11-13
      • 2015-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-21
      • 2020-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多