2
1

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 1 year has passed since last update.

SQLのトランザクションでデータを守る!

Posted at

なにこれ?

大事なデータを誤って削除してしまった!書き換えてしまった!なんていうことがあったら大変ですよね。
ですが人の手で操作する部分がある以上、そのリスクは0とは言い切れません。

この記事では、データを書き換えてしまわないようにするための方法を書き記しています。

データ書き換えのデモができるようになる!

SQLのトランザクションを利用することで(トランザクション本来の利用目的とは少しずれますが)、データを書き換える際のデモをチェックすることができるようになります!
そのため、期待通りのデータ操作ができた時にだけ、DBに処理を反映することができるようになります!

データの書き換えがすぐに反映されるのはちょっと心配

大事なデータを扱っている場合、それらの大事なデータは誤って削除、追加、更新してしまうことがあってはいけません。
そのため、データを更新するときはとても慎重になってしまいます。

トランザクションを利用してデータ更新のデモを動かす

トランザクションを利用して更新内容のデモをチェックします。

デモの結果から、DBに反映させるかどうか決めます。

DBに反映させる→コミット
更新せず、元のデータに戻す→ロールバック

トランザクションとは?

トランザクションとは、複数のSQLの更新処理を1つにまとめてDBに反映させることです。

トランザクションを利用するのは、複数の更新処理を連続して行う時が多いです。
何らかの原因によって途中の処理がうまく反映されないときにはすべての更新処理を中断します。
逆に、連続した処理がすべてうまくいった時には処理を反映させます。

コミット

トランザクション中の更新などのデータ処理の結果は、仮のものとして扱われ確定していません。
コミットが実行されると、この仮だったものが確定しデータベースに結果が反映されトランザクションが終了します。
当然、一度コミットすると、もう処理を取り消してデータをもとに戻すことができないので十分な注意が必要です。
また、コミットされる前の仮の状態のデータは、外部(別のトランザクション)からは見ることができません。

ロールバック

ロールバックは実行されるとトランザクション中の処理が取り消され、トランザクション実行前の状態に戻りトランザクションが終了します。
また、明示的に実行する以外にも、データベースとの接続が切断される等、何らかの原因でトランザクション中の処理が中断された場合にもロールバックが実行されます。

使い方

今回は、SQL Serverでの書き方を紹介します。ただ、他のSQLでも書き方に大差はありません。

まず、'BEGIN TRAN TRAN名'でトランザクションを開始します。
次に、処理をする文を書いていきます。
処理を反映させるときは'COMMIT TRAN名'でトランザクションの処理を反映させます。

COMMIT
BEGIN TRAN TRAN

SQL

COMMIT TRAN

処理を取り消すときは'ROLLBACK'でトランザクションの処理を取り消します。

ROLLBACK
BEGIN TRAN TRAN

SQL

ROLLBACK

データの取り扱いには要注意

トランザクションをマスターしてデータ取り扱いの不安を減らしましょう!

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?