update case文とトリガー

テーブルにupdateトリガーを仕込んで更新日時カラムをcurrent_timestampにupdateさせている状態で

update TableName set TargetColumn=case when OtherColumn=’abc’ then ‘D’ else TargetColumn end

で更新すると更新日時カラムは全レコード現在時刻に変更される

更新クエリの前に

Alter table TableName disable trigger TriggerName

クエリの後に

Alter table TableName enable trigger TriggerName

トリガーは楽な反面、仕込んでいるのを忘れてしまう
今日見直すとこの更新クエリ結局全部更新?
where句でupdate の方が断然速い
なんでもcase で条件分岐すれば良いというわけではないらしい

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です