1
0

More than 3 years have passed since last update.

【データベース】トランザクションを張ってみよう

Posted at

今回はトランザクションを紹介します。

■トランザクションとは??

データベース操作にて、まとめて実行されるべき一連の処理です。
トランザクションはbeginというSqlを実行することで開始します。
begi後に追加・更新・削除処理を行っても、すぐにDBには反映されません。
これらの変更を反映させるためには、commitを行うことで、トランザクション内の処理を一気に反映させることができます。
また、rollbackを行うことで、処理をすべて取り消すことも可能です。

begin→トランザクションの開始

-追加処理
-更新処理
-削除処理

commit 一括反映

若しくは、

roll back 取り消し

それでは、トランザクションが必要な理由について例を挙げますので、イメージしてみましょう。

Amazonで商品が購入される流れをイメージ!!

トランザクションなしの場合

購入者AさんがカゴにA本を入れて決済ボタンを押します。カゴにA本を入れると、
在庫が1->0に減ります。
決済時に間違えてクレジットを決済をしてしまい、エラーになりました。
ここで購入者Aさんがやっぱり購入をやめたとします。
続いて、購入者BさんがA本を検索しても在庫が0のままで購入できなくなってしまいます。

トランザクションがありの場合

①Amazonにて購入者AさんがカゴにA本を購入。

この時、update文により、本の在庫は1→0になります。

②クレジットカードによる決済処理を行う。

決済が失敗した場合、トランザクションを張っているとrollbackできます。そのため、在庫の個数を0→1個に戻す事が可能です。

在庫が減ったままだと困りますよね。
こういった場面でトランザクションは必要になります。

このように

トランザクションが張られていると、トランザクションの中に書かれた処理は処理が失敗すると元の状態に戻すことができます。

1
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
1
0