2011-02-03 4 views
0

フィールドをタイムスタンプに設定することはできますが、現在のタイムスタンプの更新時にフィールドを変更することはできませんか?私はそれができるようになりますようTIMESTAMPを使用しようとしていますSupport user time zonesMySQLタイムスタンプフィールド

:私はphpMyAdminは、それを使用すると、私はデフォルトon update CURRENT_TIMESTAMP

この質問と回答を参照してくださいを削除できないことをやろうとしている

私はタイムゾーンで簡単に遊ぶことができます。

同じ行を更新するときに、そのフィールドのデータをそのまま維持することはできませんか?

答えて

1

これはTIMESTAMPの動作です。それは大丈夫混乱することができます。それを処理するにはthisを読んでください。あるいは、DATETIMEの使用を検討してください。

+0

最新の更新をご覧ください。ありがとう –

0

コマンドインターフェイスを使用します。 その動作を取得するには、テーブル作成時に "DEFAULT CURRENT_TIMESTAMP"属性を指定する必要があるようです。 documentation here.

1

サーバーではとON UPDATEの組み合わせが許可されていますが、phpMyAdminで設定できない場合はphpMyAdminのバグかもしれません。とにかく、タイムスタンプのカラムはmysqlで特別に扱われることに注意することが重要です。したがって、あなたのテーブルにこのタイプのものが複数ある場合は、期待通りに動作しない可能性があります。

mysql docsから:

CREATE TABLE文で、最初のTIMESTAMP列には、次のいずれかの方法で宣言することができます:DEFAULT CURRENT_TIMESTAMPとONの両方のUPDATE CURRENT_TIMESTAMP条項付

  • 、列をデフォルト値の現在のタイムスタンプを持ち、自動的に更新されます。
  • DEFAULT節とON UPDATE節のどちらも使用しない場合は、DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMPと同じです。
  • DEFAULT CURRENT_TIMESTAMP句でON UPDATE句がない場合、列にはデフォルト値の現在のタイムスタンプがありますが、自動的には更新されません。
  • DEFAULT句を指定せず、ON UPDATE CURRENT_TIMESTAMP句を指定すると、カラムのデフォルト値は0になり、自動的に更新されます。
+0

私は2つ持っている、なぜそれは問題ですか? –

+0

「うまくいきません」のように*問題はありませんが、TIMESTAMP列の位置によって動作が異なります。 2番目のカラムの自動初期化をしたい場合は、最初のカラム( 'DEFAULT 0')に対して抑止する必要があります。私はあなたが本当にこれについてのドキュメントを読むべきだと思います。 –

関連する問題