入れ子のBEGIN TRANSACTION/END TRANSACTIONのペア - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/vjt1596846980081.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage

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

一番外側のBEGIN TRANSACTION/END TRANSACTIONペアは明示的トランザクションを定義します。Vantageはトランザクションの入れ子をサポートしないため、内側の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にロールバックされます。