LAST_INSERT_ID()
返回由自动增量列为当前连接生成的最新 id,但是我如何判断该值是否来自最后一个插入,而不是来自同一连接上的前一个插入?
假设我正在使用来自池的连接,它可能在我获得连接之前插入了一行,然后我执行了条件插入:
insert into mytable (colA)
select 'foo' from bar
where <some condition>;
select LAST_INSERT_ID();
我无法知道返回的值是否来自我的插入。
我想到的一种方法是:
@previousId := LAST_INSERT_ID();
insert into mytable (colA)
select 'foo' from bar
where <some condition>;
select if(LAST_INSERT_ID() != @previousId, LAST_INSERT_ID(), null);
有没有办法“清除”该LAST_INSERT_ID()
值,所以如果返回非零值,我知道这是由我的 SQL 引起的新值?