目的
この制御によって、ユーザーは、トランザクションの境界がTeradata SQLの意味またはANSI規格のいずれによって決まるのかを指定できます。
構文
次のような場合に当てはまります。
- ANSI
- ANSI規格(暗黙的トランザクションの開始とCOMMITまたはROLLBACKによる明示的トランザクションの終わり)によって決まる。
- BTET
- Teradata SQLの意味(BEGIN TRANSACTIONとEND TRANSACTION)によって決まる。
BTETモードは、Teradataモードと呼ぶこともあります。
使用上の注意
TRANSACTIONのオプションの現在の設定については、SHOW CONTROLSコマンドで表示することができます。 詳細は、SHOW CONTROLSを参照してください。
SESSION TRANSACTION設定を変更する前に、すべてのTeradata Databaseセッションをログオフする必要があります。 そうしないと、現在の設定が有効のまま残り、BTEQに次の警告メッセージが表示されます。
*** Warning: You must not be logged on to change the SQLFLAG or TRANSACTION settings.
ログオンが正常に終了すると、次のように表示されます。
*** Transaction semantics are "%s"
"%s"は、Teradata Databaseのデフォルト値およびSESSION TRANSACTIONコマンドで指定した値に応じて、BTETかANSIの文字列になります。
TRANSACTIONのオプションは、トランザクションの境界を定めるほかに、次の機能にも影響を及ぼします。
- 文字列の代入に関する切り捨ての規則
- 文字列の比較に関するデフォルトの規則
- CREATE TABLE文でのデフォルト(SETまたはMULTISET)。 Teradataモードでは、SETがデフォルトであり、ANSIモードでは、MULTISETがデフォルトです。
ANSIモードおよびBTETモード(Teradataモード)における実行の詳細については、<SQL基礎、B035-1141>を参照してください。
SESSION TRANSACTIONコマンドはTeradata SQLマクロでは使用できません。
例1 – SESSION TRANSACTION
Teradata SQLの意味に従ってトランザクションの境界を指定するには、次のように入力します。
.set session trans BTET;
例2 – SESSION TRANSACTION
ANSI標準に従ってトランザクションの境界を指定するには、次のように入力します。
.set session trans ANSI:
このコマンドを入力する場合には、SETとSESSIONの両方のキーワードを省略することができます。
BTEQの応答
エラー条件が検出されたときに、SESSION TRANSACTIONコマンドの設定に従って表示されます。