例 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - テンポラル テーブル サポート

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/cjo1556732840654.ditamap
dita:ditavalPath
ja-JP/cjo1556732840654.ditaval
dita:id
B035-1182
Product Category
Software
Teradata Vantage
時間値と日付値は、事象の順序を明確にするために誇張してあります。

部品(Parts)と注文(Orders)について記述する2つのテーブルがあるとします。

Partsテーブル:

Part_ID Supplier_ID Price Discount Part_Validity
P1 S1 $10 10% (2008-01-01, 2011-01-01)

Orderテーブル:

Order_ID Part_ID Quantity Order_Validity
O1 P1 60 (2008-01-01, 2011-01-01)

次の2つのトランザクションについて考えてみます。これらは、上記のテーブルに適用されます。

  • 注文数の増加

    部品P1の現在の割引率(Discount)が10%以上の場合には、注文数を2倍にします。

    このトランザクションでは、Partsテーブルに基づいてOrdersテーブルを変更します。

    CURRENT VALIDTIME
    UPDATE Orders
    FROM Parts
    SET Quantity= quantity*2
    WHERE discount >= 10 AND Orders.part_id = Parts.part_id;
  • 割引率の引き下げ

    P1の現在の注文数量(Quantity)が100個未満の場合には、割引率を半分に引き下げます。

    このトランザクションでは、Ordersテーブルに基づいてPartsテーブルを変更します。

    CURRENT VALIDTIME
    UPDATE Parts
    FROM Orders
    SET discount = discount/2.0
    WHERE quantity < 100 AND Parts.part_id = Orders.part_id ;

これらのトランザクションを順番に実行するとすると、どちらのトランザクションを最初に実行したかによって結果が異なります。これについての実例を、次に示す最初の2つの例で説明します。