単一の InnoDB トランザクションの 2 つ以上のクエリで NOW() を使用すると、挿入された日時値がデータベースで正確になることが保証されますか?
言い換えれば、NOW() を使用する単一のトランザクションで 20 を超えるクエリがある場合でも、NOW() は常に同じになるのでしょうか、それとも変わるのでしょうか?
単一の InnoDB トランザクションの 2 つ以上のクエリで NOW() を使用すると、挿入された日時値がデータベースで正確になることが保証されますか?
言い換えれば、NOW() を使用する単一のトランザクションで 20 を超えるクエリがある場合でも、NOW() は常に同じになるのでしょうか、それとも変わるのでしょうか?
どうやらトランザクション全体で保証されていませんが、ステートメントごとに変わる可能性があります。ここに示すように使用できる回避策があります。
BEGIN;
SELECT @now := NOW();
INSERT ... VALUES (..., @now, ...);
INSERT ... VALUES (..., @now, ...);
UPDATE ... @now ...;
COMMIT;
それを完全に避けたい場合は、現在の日付と時刻を PHP 変数に設定し、代わりにそれを使用してください。