

MySQL のカラムデフォルト値に  
`CURRENT_TIMESTAMP ON UPDATE`  
をつけると更新時にだけ時刻を更新してくれる機能がありますが

カラムデフォルト指定ではなく update 文を行ったときに同様に更新時だけ時刻を更新するようなことはできないでしょうか

`UPDATE users SET mail = 'test', updated_at = CURRENT_TIMESTAMP ON UPDATE
WHERE id = 1`

のような感じで書いても syntax error になるのでカラムのデフォルトに設定する以外方法はないでしょうか

デフォルトに設定するとどのカラムが更新されても時刻も更新されてしまうので、クエリがわで更新する場合としない場合を制御したいです

１度 update クエリを行って  
`SELECT row_count()`  
で更新数が０でなければもう１度 update_at
をセットするクエリを投げれば実現はできると思うんですが、２度に分けるのが無駄な気がするので１度にやる方法はないか保存じだったら教えていただきたいです

* * *

逆に DEFAULT CURRENT_TIMESTAMP ON UPDATE がついてるカラムに対して  
他のカラムが更新されてもクエリで明示的に値を更新しないような指定はできないでしょうか


CC BY-SA 4.0
2020-04-21T12:04:32.963
65822
2020-04-22T05:16:44.303
2020-04-22T05:16:44.303
question
mysql
ON UPDATE 句と同じ条件での自動更新をクエリで行いたい