複数文のリクエストを使用してキュー テーブルに値を取り入れる - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
ft:locale
ja-JP
ft:lastEdition
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage

複数文のリクエストを使用してキュー テーブルに値を取り入れることもできます。

次の例では、1つの複数文のリクエストを使用してshopping_cartという名前のキュー テーブルに3つの行を挿入します。

    INSERT INTO shopping_cart (order_num, product, quantity)
     VALUES ('AX3725079002', 'Youth Tee', 2)
    ;INSERT INTO shopping_cart (order_num, product, quantity)
     VALUES ('AX3725079002', 'Youth Shorts', 4)
    ;INSERT INTO shopping_cart (order_num, product, quantity)
     VALUES ('AX3725079002', 'Youth Acc', 1);

これはキュー テーブルに速く値を取り入れるための方法ですが、最初のFIFO順序で行が消費されることは保証されません。個別の行に対するQITS値を指定しない場合、システムは複数文のリクエスト全体に対するCURRENT_TIMESTAMPのデフォルト値を一度だけ計算して、その値をそのリクエストによって挿入された各行のQITS列に挿入するので、各INSERT文によって同じタイムスタンプがQITS列に割り当てられるからです。

複数文のINSERT文では、固有の間隔値をデフォルトの現行タイムスタンプ値に追加することにより、行に特定のQITS固有性およびFIFO順序を保守しながら、同時にデフォルトのCURRENT_TIMESTAMPを保持することができます

以下の例では、リクエスト内の各文を0.001秒単位のINTERVAL SECOND値で増分して、これを行なう方法を示します。

    INSERT INTO shoppingcart (qits, ordernum, product, quantity)
      VALUES (CURRENT_TIMESTAMP, 'AX3725079002', 'Youth Tee', 2)
    ;INSERT INTO shoppingcart (qits, ordernum, product, quantity)
      VALUES (INTERVAL '0.001' SECOND + CURRENT_TIMESTAMP,
              'AX3725079002', 'Youth Shorts', 4)
    ;INSERT INTO shoppingcart (qits, ordernum, product, quantity)
      VALUES (INTERVAL '0.002' SECOND + CURRENT_TIMESTAMP,
              'AX3725079002', 'Youth Acc', 1);