トランザクションとは

データベースに対する一つ以上の更新をまとめて呼ぶときの名称のこと。 更新は一般的に一回の操作で終わることはなく連続的に行うことが多いため、データの統合性をとるためにこのような複数の操作をひとまとまりにしたものが必要になる。

トランザクションの作成例

BEGIN TRANSACTION // PostgreSQLの場合
START TRANSACTION // MySQLの場合

-- カッターシャツの販売単価を1000円値引き
UPDATE Shohin SET hanbai_tanka = hanbai_tanka - 1000
WHERE shohin_mei = 'カッターシャツ';

-- Tシャツの販売単価を1000円値上げ
UPDATE Shohin SET hanbai_tanka = hanbai_tanka + 1000
WHERE shohin_mei = 'Tシャツ';

COMMIT; //更新を確定する
ROLLBACK; //更新を破棄する

ACID特性

DBMSのトランザクションには、守るべき4つの大事な約束事が標準規格によって取り決められている。

トランザクションが終わったとき、そこに含まれていた更新処理は、すべて実行されるか、またはすべて実行されない状態で終わることを保証する性質のこと。

トランザクションに含まれた処理は、データベースにあらかじめ設定された制約、たとえば主キーやNOTNULL制約を満たすという性質のこと。

トランザクション同士がお互いに干渉を受けないことを保証する性質のこと。

トランザクションがコミットにせよロールバックにせよ、終了したらその時点でのデータの状態が保存されることを保証する性質のこと。耐久性ともいわれる。