2011-10-10 12 views
7

テーブルに列update_dateがあり、型がタイムスタンプです。私はCURRENT_TIMESTAMPにphpmyadminドロップダウンメニューを使用してデアルト値を設定しました。しかし、後でSQL UPDATE x SETを実行したとき... 列の変更だけがある場合は、タイムスタンプ列を更新します。私が達成したいのは、更新SQLが実行されるたびに、現在の時刻が変更されているかどうかが設定されているかどうかです。 mysqlでそれを行う方法はありますか?または、更新が呼び出されるたびにupdate_dateを明示的に設定する必要がありますか?変更がなくてもMYSQLのタイムスタンプ列自動更新?

ありがとうございました

答えて

6

明示的に列を更新する必要があります。行の他の列の値が現在の値から変更されたとき

自動更新TIMESTAMPカラムがある場合、自動的に現在のタイムスタンプに更新される:MySQLのマニュアル、TIMESTAMP propertiesから。 他のすべての列が現在の値に設定されている場合、TIMESTAMP列は変更されません。 TIMESTAMP列にNULL以外の値が明示的に割り当てられている場合、自動更新は適用されません。

強調鉱山。

+0

私は行にタイムスタンプ列を1つだけ持っています。だから私はデフォルト値をnullに変更して、SQLが実行されるたびに明示的に更新するか、デフォルトの型をCURRENT_TIMESTAMPのままにしておく必要がありますか? – akd

+1

もう1つは、このコードを実行すると、何も更新されないということです。「更新x SET update_date = NOW()」からmysql_query?理由は何でしょうか? – akd

+0

非常に便利でトリッキーなチップ! –