本番データ触るときはトランザクションに注意しよう
本番データ触るときはトランザクションに注意しよう(PostgreSQL)
保守運用していれば、本番データを直接いじりたいケースはあると思います。
ただ、本番データをSQLで変更するときはトランザクション貼ることを意識しましょう。
そうすることで、本番環境で事故る可能性が減ります。
■ トランザクション処理が必要なケース - 手動でSQL操作するとき - 複数データの統合性を保つとき
トランザクション
トランザクションの制御を行うには、基本的に次の3つのステートメントで行います。
■ BEGIN TRANSACTION - トランザクションを開始します。 ■ COMMIT TRANSACTION - トランザクションを終了し、データの変更をコミットし、リソースを解放します。 ■ ROLLBACK TRANSACTION - トランザクションを開始位置からの変更をロールバックし、リソースを解放します。
PostgreSQL ではトランザクションを構成するSQL コマンドを BEGIN と COMMIT で囲んで設定します。BEGIN と COMMIT で囲まれた命令文のグループは トランザクションブロック と呼ばれることもあります。
例えば、商品の名前をhogeに変えたい場合は以下のようにSQLを書きます。
BEGIN; UPDATE items SET name ='hoge' where item_code = '111'; UPDATE items SET name ='hoge' where item_code = '222'; ... COMMIT;
トランザクション処理の途中でコミットをおこなわない(何かしらのエラーが発生)と判断したばあいは COMMIT ではなく ROLLBACK を使用して、行なわれたすべての更新を破棄します。
よって、冪等性が担保されます。
まとめ
まぁ、何が言いたいかというと。 本番データ触る時はトランザクション貼りましょうってことです。