这是一个唠叨我很久的问题。假设我有一个包含两列(id
和file
)的表。有没有办法在插入查询中立即使用自动递增的ID?像这样:
INSERT INTO `sometable` (`file`) VALUES (CONCAT(id, '-somename.ext'));
但这导致file
为“0-somename.ext”。
当然我可以在插入后立即进行更新并在那里使用id。但我只是想知道是否有任何方法可以在一个快速插入中完成它。
我正在寻找一种解决方案,即使该表为空或之前没有进行过其他插入操作也能正常工作。 LAST_INSERT_ID() + 1
不起作用,因为如果在第一个插入时使用它,则返回0(即使表不为空)。如果之前的插入是对另一个表进行的,则它会返回一个错误的id。
为什么没有这个问题的标准解决方案?
答案 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'));