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 导致的新值?
row_count
有什么问题? - rsanchez