2012-04-11 9 views

答えて

5

Apparently it is not guaranteedトランザクションでは、文から文に変更することができます。あなたは完全にちょうどPHP変数に現在の日付と時刻を設定し、代わりにそれを使用することを避けたい場合は

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

:あなたはas shown hereを使用することができます回避策があります。

+0

うーん..私はこの問題をphpの変数ルートと一緒に公開しました。これをどのように達成するか考えていますか? http://stackoverflow.com/questions/10129180/get-datetime-in-php-and-post-it-to-mysql-for-transaction-consistency – Maverick

+0

私は 'NOW()'が修正されたという誤った印象の下にいた特定の値にトランザクションの開始時に、私はそれが本当ではないことがわかります。 MySQLレプリケーションを使用する場合、 'NOW()'によって返される値はレプリケーションスレッドによって設定されますが、その値は単一トランザクション内のステートメント間で変更される可能性があります。私は、レプリケーションのセマンティクスのために 'NOW()'の動​​作に混乱していたと思います。これは、MySQLのドキュメントに実際に混乱が起きている場所を見つけることができる唯一の場所です。 –

関連する問題