在插入中立即使用自动增量值

时间:2014-02-13 18:40:02

标签: mysql auto-increment

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

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

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

当然我可以在插入后立即进行更新并在那里使用id。但我只是想知道是否有任何方法可以在一个快速插入中完成它。

更新

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

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

1 个答案:

答案 0 :(得分:0)

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'));