• 締切済み

update時にtimestampが更新されない

昨日SQLについて学び始めたばかりでわからないことが多く、質問させていただきます。 フィールドをtimestamp型で定義すれば、insert時やtimestamp時に自動的に日時が更新されるということですが、なぜかupdate時に更新されません。 insert時にはちゃんと日時が入りますし、insert後にtimestampのカラムにNULLをいれたときも更新されました。なせupdate時だけ更新されないのでしょう?

みんなの回答

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

-- コピペ TIMESTAMP 型カラムでは、他のカラム型とは異なる方法で NULL 値が処理される。TIMESTAMP 型カラムには、NULL は格納できない。カラムに NULL を挿入すると、カラムの値として現在の日時が設定される。TIMESTAMP 型のカラムはこのように動作するため、NULL 属性と NOT NULL 属性は通常どおりには適用されず、それらを指定しても無視される。 その一方で、TIMESTAMP 型のカラムを MySQL クライアントにとって使用しやすくするために、サーバは、(実際には、TIMESTAMP 型カラムには NULL 値は格納されないにもかかわらず)TIMESTAMP 型カラムについて、NULL 値の割り当てが可能(true)と報告する。DESCRIBE tbl_name を使用してテーブルに関する記述を取得すると、これを確認できる。 注意: TIMESTAMP 型のカラムに、値として 0 を設定するのは、NULL を設定するのとは異なる。0 は TIMESTAMP 型の有効な値である。 --

KRASU
質問者

お礼

すいません質問の内容がわかりづらかったようで; NULLをいれると現在の日時が設定されていることを知っていたので、NULLをいれたらちゃんと現在の日時が入るということを質問文に書きました。 質問したいのはupdate時になぜかこうしんされないということです。わかりづらくてすいません。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

updateされる要素が一つもなかったのでは? もともと'a'がはいっているフィールドに同じ'a'を いれなおしても実際にはupdateされません。 update `table` set `field`='a' where `field`='a'; もしその場合はNULLやNOW()で明示的にtimestamp フィールドを更新する必要があります

KRASU
質問者

お礼

いえ、ちゃんと別の内容にupdateしました。 update category1 set title="abc" where id=1; としたのですが、どこか問題があったのでしょうか?

関連するQ&A