入れ子のBEGIN TRANSACTION/END TRANSACTIONのペア - Teradata Database - Teradata Vantage NewSQL Engine - 入れ子のBEGIN TRANSACTION/END TRANSACTIONのペア

Teradata Vantage™ SQLデータ操作言語

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/fbo1512081269404.ditamap
dita:ditavalPath
ja-JP/fbo1512081269404.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage

BEGIN TRANSACTION/END TRANSACTIONのペアが入れ子になっている場合、Teradata Databaseは、BEGIN TRANSACTION文とEND TRANSACTION文がそれぞれ対応しているかどうかを検証します。

一番外側のBEGIN TRANSACTION/END TRANSACTIONペアは明示的トランザクションを定義します。Teradata Databaseはトランザクションの入れ子をサポートしないため、内側のBEGIN TRANSACTION/END TRANSACTIONペアはトランザクションに影響を及ぼしません。

埋め込まれた複文リクエストとマクロ実行は、一番外側のBEGIN TRANSACTION/END TRANSACTION明示トランザクションの一部であるとみなされ、この文脈での暗黙のトランザクションとはみなされません。

複文リクエストでは、1つのBEGIN TRANSACTION文のみ指定することができます。BEGIN TRANSACTION文を指定する場合は、リクエストの最初の文でなければなりません。

例えば、以下のような一連のリクエストは、1つの明示的トランザクションとして処理されます。

     BEGIN TRANSACTION;
      SELECT …;
      UPDATE …
      EXEC a(3,4);
        BEGIN TRANSACTION;
         UPDATE …;
         INSERT …
         ;INSERT …;
        END TRANSACTION;
      INSERT …;
     END TRANSACTION;

入れ子のBEGIN TRANSACTION/END TRANSACTIONの途中でエラーが発生した場合には、すべてが最初のBEGIN TRANSACTIONにロールバックされます。