【问题标题】:Instantly using auto-increment value in insert在插入中立即使用自动增量值
【发布时间】:2014-03-12 20:02:25
【问题描述】:

这是一个困扰我很久的问题。假设我有一个包含两列的表(idfile)。有没有办法在插入查询中立即使用自动递增的 id?像这样:

INSERT INTO `sometable` (`file`) VALUES (CONCAT(id, '-somename.ext'));

但这会导致file 成为“0-somename.ext”。

当然,我可以在插入后立即进行更新并在那里使用 id。但我只是想知道是否有任何方法可以在一次快速插入中做到这一点。

更新

我正在寻找一种即使表为空或之前没有进行其他插入也能正常工作的解决方案。 LAST_INSERT_ID() + 1 不起作用,因为如果在第一次插入时使用它会返回 0(即使表不为空)。如果之前插入到另一个表,它会完全返回错误的 id。

为什么这个问题没有标准解决方案?

【问题讨论】:

    标签: mysql auto-increment


    【解决方案1】:
    create table test (id int AUTO_INCREMENT, tx text, PRIMARY KEY (id));
    
    insert into test(tx) values ('first');
    
    insert into test(tx) values(concat( LAST_INSERT_ID() +1, 'blabla'));
    
    insert into test(tx) values(concat( LAST_INSERT_ID() +1, 'blabla'));
    
    insert into test(tx) values(concat( LAST_INSERT_ID() +1, 'blabla'));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2012-01-05
      • 2012-04-23
      • 2019-03-31
      相关资源
      最近更新 更多