BEGIN [ATOMIC]
備考
個々のステートメントをグループにまとめると、1 つの単位として扱うことができて便利です。BEGIN および END ステートメントは、複合ステートメント内でステートメントを 1 つの単位にまとめるために使用されます。複合ステートメントは、ストアド プロシージャの本体、ユーザー定義関数、またはトリガー宣言内でのみ使用できます。
ATOMIC は、単位内の一連のステートメントはすべて成功するか、すべて失敗するかのいずれであることを示します。BEGIN ATOMIC ... END 単位内の条件が 1 つでも満たされない場合、レコードは影響を受けません。条件が複数の行に影響を与える場合、すべての行が影響を受けるか、どの行も影響を受けません。レコードに影響を与えるためには、BEGIN ATOMIC ... END 単位内のすべての条件が真を返す必要があります。
例
次の例では、2 つの UPDATE が ATOMIC 単位としてまとめられています。Person テーブル内の Perm_State 列は、ほかすべての条件が真の場合にのみ更新されます。つまり、Bill Andrew のレコードの Perm_State には "TX" が入っており、Yvette Lopez のレコードの Perm_State には "OR" が入っている場合です。これらの条件のいずれかが真でない場合、どちらのレコードも更新されません。BEGIN ... END 単位は 1 つのプロシージャ内にあるものとします。
BEGIN ATOMIC
UPDATE Person set Perm_State = 'MA' where Perm_State = 'TX'
AND First_Name = 'Bill' AND Last_Name = 'Andrew';
UPDATE Person SET Perm_State = 'WA' WHERE Perm_State = 'OR'
AND First_Name = 'Yvette' AND Last_Name = 'Lopez';
END
関連項目