FOR TRANSACTION - Teradata Database - Teradata Vantage NewSQL Engine - FOR TRANSACTIONオプション、SET QUERY_BAND SQL文。

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/wkf1512081455740.ditamap
dita:ditavalPath
ja-JP/wkf1512081455740.ditaval
dita:id
B035-1144
Product Category
Software
Teradata Vantage

namevalueのペアのセットで指定されたクエリー バンドのセットが、現在のトランザクションに適用されます。

既存のセッションのクエリー バンドと同時にトランザクションのクエリー バンドを設定できます。

一度にアクティブにできるトランザクション クエリー バンドは1つだけです。

トランザクション内で順に個々のSET QUERY_BAND = … FOR TRANSACTIONリクエストが実行されるたびに、そのクエリー バンドは現在のトランザクション クエリー バンドを置き換えます。

複文リクエスト内で規定される場合、SET QUERY_BAND … FOR TRANSACTIONは指定される最初のリクエストでなければなりません。複文リクエストで、Teradata Databaseはトランザクション クエリー バンドを1つだけ、リクエスト内のすべての文に適用します。Teradata Active Systems Management (TASM)の分類が、複文リクエスト内のすべての文で1度だけ発生します。

プロキシ ユーザーが複文リクエストのSET QUERY_BAND文で設定された場合、トランザクション クエリー バンドが以下によって指定されている場合を除き、Teradata Databaseはプロキシ ユーザー権限をリクエスト内のすべての文に適用します。
  • ? パラメータ(JavaまたはODBCプログラム内)。
  • マクロ。
  • SQLプロシージャ。

上記の場合のみ、Teradata Databaseは信頼済みセッションの権限を複文リクエストの文に適用しません。そのため、複数文からなるリクエストごとに1つのSET QUERY_BAND … FOR TRANSACTION文のみ指定できます。

トランザクションのクエリー バンドはDBC.SessionTblに格納されません。

Teradata Databaseは、トランザクションの終了時に、次のSQLトランザクション終了文のいずれかにより指定されるように、現在のトランザクションのクエリー バンドを破棄します。
  • ABORT
  • COMMIT
  • ROLLBACK

これらの文の詳細については、<Teradata Vantage™ SQLデータ操作言語、B035-1146>を参照してください。

Teradata Databaseは、システムの再始動後は現行トランザクションのクエリー バンドを復元しません。

SET QUERY_BAND … FOR TRANSACTIONは、マクロとSQLプロシージャの両方でサポートされます。

SET QUERY_BAND … FOR TRANSACTIONはTeradata Parallel Transporterでサポートされません。

次の処理は、SET QUERY_BAND = … FOR TRANSACTIONリクエストのコンテキストでのクエリー バンドのユース ケースを説明します。

  1. Javaで実装されているWebサービスがHTTP/SOAP (Hypertext Transfer Protocol/Simple Object Access Protocol)リクエストに応答します。
  2. WebサービスがJTA (Java Transaction API)を使用してユーザー管理トランザクションを開始します。
  3. Webサービスがアプリケーション サーバーにより管理される接続プールからJDBC接続を取得します。
  4. WebサービスがJDBC (Java Database Connectivity)を使用してSQLリクエストを実行し、トランザクションのクエリー バンドを確立します。
  5. Webサービスが複数のEJB (Enterprise Java Beans)を呼び出して何らかの処理を実行します。例えば、最初のEJBは行をテーブルAに挿入し、2番目のEJBはテーブルBの一部の行を更新します。EJBへのすべての呼び出しは同じトランザクションに関与するため、同じクエリー バンドで識別されます。
  6. Webサービスがトランザクションをコミットします。

トランザクションのクエリー バンドの値は自動的に消去されるため、プールされた接続に対する以降のSQLリクエストは別のクエリー バンドの値になります。