5

単一の InnoDB トランザクションの 2 つ以上のクエリで NOW() を使用すると、挿入された日時値がデータベースで正確になることが保証されますか?

言い換えれば、NOW() を使用する単一のトランザクションで 20 を超えるクエリがある場合でも、NOW() は常に同じになるのでしょうか、それとも変わるのでしょうか?

4

1 に答える 1

5

どうやらトランザクション全体で保証されていませんが、ステートメントごとに変わる可能性があります。ここに示すように使用できる回避策があります。

BEGIN;
SELECT @now := NOW();
INSERT ... VALUES (..., @now, ...);
INSERT ... VALUES (..., @now, ...);
UPDATE ... @now ...;
COMMIT; 

それを完全に避けたい場合は、現在の日付と時刻を PHP 変数に設定し、代わりにそれを使用してください。

于 2012-04-11T20:22:43.327 に答える