3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQLを学んでみた⑦(トランザクション)

Posted at

実務でSQLやDBについて理解していないといけないと思い勉強を始めました。
その内容をまとめます。

トランザクションはなぜ必要か

DBMSにSQL文で指示すれば基本的には間違った処理にはならないですが、
データの書き換え途中で別の人が同じデータを更新していたり、PCの電源が落ちて処理が途中で中断してしまったりするとデータがおかしくなることは考えられます。

エラーハンドリングと同じで「そもそも正しく処理されない可能性」を考えることは大切です。

例えば

Aさんが自分の口座から10000円をBさんに振り込みしたとします。

①Aさんの口座の残高が10000円減る。
②ここで異常がおきて処理が中断。
③Bさんの残高は増えない。

みたいなことが考えられます。

ただ単に残高が減っただけという恐ろしい事態に...
銀行のシステムを作ってくれている方々のおかげで安心して振り込み処理ができているんですね。ありがたや。

トランザクションとは

「処理をひとかたまりにする」ことを言います。

先ほどの例でいうと
①Aさんの残高が10000円減る。
②Bさんの残高が10000円増える。
をひとかたまりにするので、どちらかだけ実行されることはありえないということになります。
つまり、どちらも実行されるどちらも失敗するのどちらかということです。

使い方

BEGINからCOMMITまでのSQL文を1つのトランザクションとして扱います。

BEGIN;
処理
COMMIT;

また、取り消しをしたい場合は以下のようにします。

BEGIN;
処理
ROLLBACK;

上記のようにトランザクションすることで誰か他の人がDBを変更できないように明示的にロックをかけていることにもなるようです。

以上です。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?