5
1つのInnoDBトランザクションで2回以上のクエリでNOW()を使用していますか挿入日時の値はデータベースに正確になるでしょうか?DATETIME InnoDBトランザクションのNOW()は保証されていますか?
言い換えれば、NOW()は、1つのトランザクションで20を超えるクエリを常に使用している場合でも、変更した場合でも同じですか?
1つのInnoDBトランザクションで2回以上のクエリでNOW()を使用していますか挿入日時の値はデータベースに正確になるでしょうか?DATETIME InnoDBトランザクションのNOW()は保証されていますか?
言い換えれば、NOW()は、1つのトランザクションで20を超えるクエリを常に使用している場合でも、変更した場合でも同じですか?
Apparently it is not guaranteedトランザクションでは、文から文に変更することができます。あなたは完全にちょうどPHP変数に現在の日付と時刻を設定し、代わりにそれを使用することを避けたい場合は
BEGIN;
SELECT @now := NOW();
INSERT ... VALUES (..., @now, ...);
INSERT ... VALUES (..., @now, ...);
UPDATE ... @now ...;
COMMIT;
:あなたはas shown hereを使用することができます回避策があります。
うーん..私はこの問題をphpの変数ルートと一緒に公開しました。これをどのように達成するか考えていますか? http://stackoverflow.com/questions/10129180/get-datetime-in-php-and-post-it-to-mysql-for-transaction-consistency – Maverick
私は 'NOW()'が修正されたという誤った印象の下にいた特定の値にトランザクションの開始時に、私はそれが本当ではないことがわかります。 MySQLレプリケーションを使用する場合、 'NOW()'によって返される値はレプリケーションスレッドによって設定されますが、その値は単一トランザクション内のステートメント間で変更される可能性があります。私は、レプリケーションのセマンティクスのために 'NOW()'の動作に混乱していたと思います。これは、MySQLのドキュメントに実際に混乱が起きている場所を見つけることができる唯一の場所です。 –