LAST_INSERT_ID()
自動インクリメント列によって現在の接続に対して生成された最新のIDを返しますが、その値が最後の挿入からのものであり、同じ接続での以前の挿入からのものではないかどうかはどうすればわかりますか?
プールからの接続を使用していて、接続を取得する前に行を挿入した可能性があり、条件付き挿入を実行するとします。
insert into mytable (colA)
select 'foo' from bar
where <some condition>;
select LAST_INSERT_ID();
返された値が挿入からのものかどうかを知る方法がありません。
私が考えた1つの方法は次のとおりです。
@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 によって引き起こされた新しい値であることがわかりますか?