本番環境のDBを手修正するとき
間違いなく、バッドノウハウだけど、これを聞いたときは目から鱗だったのでメモメモ。
本番環境の DB を直接いじることがあるとします。
Navicat とか、MySQL Query Browser とか、pgadmin とか、Oracle SQLDeveloper とか、そういうツールが使えればあんまり気にしないでも良いかもしれない。
でも、セキュリティポリシー(笑)で、データベースへのネットワーク接続が許可されていない、ということがありえます。頼れるのは、由緒正しきコマンドラインインターフェースのみ。
で、こういうときのやり方なのですが、
- Start Transaction;
- select 文を叩いて、where 句を決める
- update/delete を発行(上の where 句を使うこと)
- もいっかい 同じ select 文を叩く
- データチェック
- うまく行ってれば Commit;
- 失敗なら Rollback
とするのが良いらしい。
自分の中では、「コマンドラインでトランザクションをかける」ってのが結構斬新でした。これって常識なんですかね?
# 「そもそも本番DBを直接いじるのが非常識だろ」という批判は置いとくとして。