BEGIN - トランザクション処理を開始する -

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 文を実行して、トランザクション内の処理を取り消すことができます。 なお、MySQL で START TRANSACTION を使用する場合には、バージョン 4 以降が必要です。

-- 【説明】
-- 次の SQL 文は、「T_01_1」表にデータを挿入するトランザクション処理を開始します。

-- SQL Server, MySQL, PostgreSQL

BEGIN;

INSERT INTO T_01_1
 VALUES ('200101', '小林', '健二', '1');

COMMIT;


-- Access

BEGIN TRANSACTION;

INSERT INTO T_01_1
 VALUES ('200101', '小林', '健二', '1');

COMMIT;


SELECT * FROM T_01_1;


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

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

-- 【説明】
-- 次の SQL 文は、「T_01_1」表にデータを挿入するトランザクション処理(INS)、「T_01_1」表の「ID」列が「100102」に一致するデータの「L_NAME」列を「山田」に更新するトランザクション処理(UPD)を開始します。

BEGIN TRAN INS;

INSERT INTO T_01_1
 VALUES ('200101', '小林', '健二', '1');


BEGIN TRAN UPD;

UPDATE T_01_1
 SET L_NAME = '山田'
 WHERE ID = '100102';

-- 【説明】
-- 次の SQL 文は、「T_01_1」表にデータを更新したトランザクション処理(UPD)を確定(終了)します。

COMMIT TRAN UPD;


SELECT * FROM T_01_1;


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

-- 【説明】
-- 次の SQL 文は、「T_01_1」表にデータを挿入したトランザクション処理(INS)を確定(終了)します。

COMMIT TRAN INS;


SELECT * FROM T_01_1;


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

参考表

T_01_1

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