MYSQL last_insert_id() によるシーケンスのシミュレーションの理解

うーん、私には
update sequence set id = last_insert_id(id+1); -> (A)
select last_inset_id() -> (B)
でマルチユーザ対応のシーケンスの代わりになる理由が理解できない。

前提条件

innoDB エンジンを使用する。
last_inset_id() はセッションごとに保持される値である。

update は排他ロックなので、更新中でも他のセッションからの読み取りはできる。(C)
なので、id + 1 の計算が同時刻に複数のセッションで行われた場合は、
id + 1 の計算は各セッションで同じになる。
以下、〜略〜
すなわち、ID のかぶりが起こるような気がするのだが。。。きのせいか。
(C) の解釈が間違っているのか、もっとしらべてみる。
――――――――――――――――――――――――――――――
実践ハイパフォーマンス MySQL(1.2.1 読み取りロック/書き込みロック) より、
「書き込みロックは排他的であり、読み取りロックと他の書き込みロックを両方
ブロックする。」さらに、(1.3.1 分離レベルより、)InnoDB
トランザクション分離レベルが(デフォルトで)REPEATABLE READ なので、
ダーティーリードがされないことが保証されるということですね〜
――――――――――――――――――――――――――――――
「読み取りロックは共有される、または相互にノンブロッキングである。」