複文リクエストの例 - Basic Teradata Query

Basic Teradata® Queryリファレンス

Product
Basic Teradata Query
Release Number
17.10
Published
2022年2月
Language
日本語
Last Update
2022-02-11
dita:mapPath
ja-JP/nnw1608578382132.ditamap
dita:ditavalPath
ja-JP/obe1474387269547.ditaval
dita:id
B035-2414
Product Category
Teradata Tools and Utilities

前の同じステートメントを複文リクエストとして送るには、次の構文を使用します。

SELECT * FROM Employee
; DELETE FROM Employee WHERE Name = 'Inglis C' AND Empno = 10014
; SELECT Name FROM Employee;

BTEQは、使用可能な1つのデータベース ユーザー セッションに対して一度に1つのリクエストのみを送信します。 リクエストが失敗したが再試行が可能であることを示すエラーが発生した場合、BTEQはそのリクエストを再発行します。 BTEQはそれ以上の処理を開始しません。

BTEQは、SQLを解釈せずにデータベースに渡すため、トランザクションの状態は認識しません。 つまり、トランザクションの状態を制御できません。 その状態そのものは、TeradataモードのBEGIN TRANSACTION (BT)、END TRANSACTION (ET)、ABORT、またはANSIモードのCOMMITおよびROLLBACKを使用するために用いられるメソッドによってのみ決定される必要があります。 したがって、発行された1つ以上のリクエストに関連するトランザクションを完全に再試行可能にする必要がある場合や、1つのトランザクションが複数のリクエストにわたる場合には、ANSIおよびTeradataというトランザクション セマンティクス モードの相違に加えて、BTEQが「状態を認識していないこと」もユーザーは考慮に入れなければなりません。

Teradataセマンティクス モードでは、そのトランザクションを識別する方法(複文リクエストやマクロの実行などにおける暗黙的方法、またはBT/ETによる明示的方法)に関係なく、リクエストやステートメントが失敗すると、そのトランザクションはロールバックされます。 ユーザーの責任において、そのようなロールバックの結果としてどのような処置をとるかを決定する必要があります。トランザクションのうちロールバックされた部分を再駆動(おそらくは、エラーの原因となった何らかの状態を修正した後に)するか、トランザクションを放棄(すなわち、トランザクションの一部として実行されるはずであった残りのリクエストまたはステートメントを回避)するか、特定の状況に応じて何か別の処置をとるかを選択できます。

ANSIセマンティクス モードでは、COMMITを発行してトランザクションを完了させるかROLLBACKを発行してトランザクションを逆行させるかしない限り、トランザクションは常にアクティブとなります。 ANSIモードでステートメントが失敗すると、そのリクエストがロールバックされます。トランザクションはロールバックされません。 ユーザーの責任において、リクエストを修正して再駆動するか、すでに処理されたトランザクションの残りをロールバックするためにROLLBACK文を発行するか、特定の状況に応じて何か別の処置をとるかを選択する必要があります。

TeradataモードとANSIモードの詳細や、各モードがトランザクション セマンティクスに与える影響については、<Teradata Vantage™ - SQLリクエストおよびトランザクション処理, B035-1142>を参照してください。