技術ブログ

(技術系中心)基本自分用備忘録なので、あくまで参考程度でお願いします。

本番データ触るときはトランザクションに注意しよう

本番データ触るときはトランザクションに注意しよう(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 を使用して、行なわれたすべての更新を破棄します。

よって、冪等性が担保されます。

まとめ

まぁ、何が言いたいかというと。 本番データ触る時はトランザクション貼りましょうってことです。