LAST_INSERT_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, если возвращается ненулевое значение?