• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:特定のフィールドが更新されたときだけ日時を更新する)

特定のフィールドが更新されたときだけ日時を更新する

このQ&Aのポイント
  • フィールドのデータが更新された場合に、特定のフィールドの日時を更新する方法について質問です。
  • テーブルを分けずに、特定のフィールドだけを対象に日時を更新する方法について教えてください。
  • フィールドのデータが更新された時に、特定のフィールドの日時だけを更新したいですが、テーブルを分けずに実現する方法はありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • hogya
  • ベストアンサー率67% (49/73)
回答No.1

現在on update句で行っている部分をUPDATEトリガーで行うようにすれば実現は可能かと思います。 UPDATEトリガーの中では、target列の更新前と後の値を比較して違ったら更新日時を更新するというロジックを組めばよいでしょう。 ちなみにこんな感じになると思います。 BEGIN IF NEW.target != OLD.target THEN SET NEW.update_day = now(); END IF; END 「MySQL UPDATEトリガー」などで検索すれば用例はたくさんありますので、試してみてください。

juju-juju
質問者

お礼

有難うございます。update_dayをtimestamp型のままで、 ・default CURRENT_TIMESTAMP ・on update CURRENT_TIMESTAMP こちらをなくしました。それで思うようにいきました。 容量が少ないのでtimestamp型を使っていますが、datetime型の方がよいですか。

その他の回答 (1)

  • hogya
  • ベストアンサー率67% (49/73)
回答No.2

TIMESTAMP型の範囲は2037年までだったと思います。(64bit環境でもそうなのかは確認していません) あとはDATETIME型にした場合に既存の日数計算等のコーディングに影響がないかどうか等も考慮して決めればよいかと思います。

juju-juju
質問者

お礼

分かりました。有難うございました。