あなたのUPDATE ステートメント自体がlastmodifiedを検証しています SELECTで読み取った値 九面が示唆するように声明。
lastmodifiedの場合 DATEです 、DATE以降、同じ秒に同じ行に複数の更新がある場合、競合状態が発生する可能性があります。 秒までの粒度しかありません。 lastmodifiedの場合 TIMESTAMPです 一方、TIMESTAMP以降、競合状態が発生する可能性のあるウィンドウははるかに制限されます。 1秒未満の精度は3〜9桁です(ほとんどのWindowsマシンでは3桁、ほとんどのUnixマシンでは6桁)。同じミリ秒または同じマイクロ秒で2つの更新が行われる可能性はほとんどありませんが、不可能ではありません。しかし、それは間違いではありません。
最終変更日の代わりに、シーケンスで生成された値を使用できます。これにより、NOCYCLEシーケンスが同じ値を2回返さないため、更新が失われないことが保証されます。しかし、そのパスをたどると、すべての行に最終更新日があるという情報の利点が失われるか、テーブルのすべての行に数バイトの余分なデータが格納されます。アプリケーションによっては、これらのトレードオフのいずれかが価値がある場合もあれば、解決するよりも多くの問題が発生する場合もあります。