SQL-92/99 Oracle Db2 SQL Server MySQL PostgreSQL Access

SQL Server/

BEGIN
BEGIN TRAN[SACTION] トランザクション名


MySQL/

BEGIN [ WORK ]
START TRANSACTION


PostgreSQL/
BEGIN [ WORK | TRANSACTION ]


Access/
BEGIN TRANSACTION

BEGINはトランザクション処理を行うときに使用します。

この開始されたトランザクション処理を確定(終了)する場合にはCOMMITを実行します。

なお、COMMITの実行前であればROLLBACKを実行することでトランザクション内の処理を取り消すこともできます。


関連キーワード





SQL実行例の説明 (1)

データベースのソフトウェア製品によってBEGINの後に付加するキーワードが異なるので注意しましょう。


・BEGINを使用してT1_SAMPLE表にデータを挿入するトランザクション処理を開始します。

・T1_SAMPLE表にデータを挿入します。

・トランザクション処理を確定(終了)します。


BEGIN;
INSERT INTO T1_SAMPLE VALUES ('200101', '小林', '健二', '1');
COMMIT;


SQL実行の結果(1-1)

T1_SAMPLE表には5件のデータが格納されています。(左)

トランザクションを開始、データを挿入、トランザクション処理を確定していますので、T1_SAMPLE表に「ID」「200101」の「小林」「健二」「1」が追加されています。(右)


SELECT * FROM T1_SAMPLE;

IDL_NAMEF_NAMESEX
100101山田晴男1
100102佐藤2
100103鈴木二郎1
100104田中栄吉1
100105木村1
SQL Result
IDL_NAMEF_NAMESEX
100101山田晴男1
100102佐藤2
100103鈴木二郎1
100104田中栄吉1
100105木村1
200101小林健二1



SQL実行例の説明(2)

SQL Serverではトランザクション名を指定して複数のトランザクション処理を管理することができます。


・BEGINを使用してT1_SAMPLE表にデータを挿入するトランザクション処理(INS)を開始します。

・次に、BEGINを使用してT1_SAMPLE表の「ID」が「100102」に一致するデータの「L_NAME」を「山田」に更新するトランザクション処理(UPD)を開始します。

・その後、データを更新したトランザクション処理(UPD)、データを挿入したトランザクション処理(INS)の順にトランザクション処理を確定(終了)します。


BEGIN TRAN INS;
INSERT INTO T1_SAMPLE VALUES ('200101', '小林', '健二', '1');

BEGIN TRAN UPD;
UPDATE T1_SAMPLE SET L_NAME = '山田' WHERE ID = '100102';


SQL実行の結果(2-1)

T1_SAMPLE表には5件のデータが格納されています。(左)

まず、データを更新したトランザクション処理(UPD)を確定(終了)すると、T1_SAMPLE表の「ID」が「100102」の「佐藤」が「山田」に変更されます。(右)

このときデータを挿入したトランザクション処理(INS)はトランザクション処理を確定(終了)していないのでT1_SAMPLE表には存在しません。


COMMIT TRAN UPD;

SELECT * FROM T1_SAMPLE;

IDL_NAMEF_NAMESEX
100101山田晴男1
100102佐藤2
100103鈴木二郎1
100104田中栄吉1
100105木村1
SQL Result
IDL_NAMEF_NAMESEX
100101山田晴男1
100102山田2
100103鈴木二郎1
100104田中栄吉1
100105木村1



SQL実行の結果(2-2)

次に、データを挿入したトランザクション処理(INS)を確定(終了)すると、T1_SAMPLE表に「ID」が「200101」の「小林」「健二」「1」が追加されます。(右)


COMMIT TRAN INS;

SELECT * FROM T1_SAMPLE;

IDL_NAMEF_NAMESEX
100101山田晴男1
100102山田2
100103鈴木二郎1
100104田中栄吉1
100105木村1
SQL Result
IDL_NAMEF_NAMESEX
100101山田晴男1
100102山田2
100103鈴木二郎1
100104田中栄吉1
100105木村1
200101小林健二1