それぞれのトランザクションには、次に示す特徴があるとします。
時間 | 注文数増加トランザクション | 割引率引き下げトランザクション |
---|---|---|
開始時刻 | 2009-01-05 | 2009-01-02 |
変更時刻 | 2009-01-10 | 2009-01-03 |
終了時刻 | 2009-01-11 | 2009-01-04 |
割引率引き下げが、注文数増加の開始前に終了していることに注目してください。
これらのトランザクションが完了した後のPartsテーブルとOrdersテーブルの状態を次に示します。
割引率引き下げトランザクション後のPartsテーブル:
Part_ID | Supplier_ID | Price | Discount | Part_Validity |
---|---|---|---|---|
P1 | S1 | $10 | 10% | (2008-01-01, 2009-01-02) |
P1 | S1 | $10 | 5% | (2009-01-02, 2011-01-01) |
このテーブルの元の状態では、P1行がCURRENTトランザクションの対象となります。これは、P1行の有効時間がTEMPORAL_DATEと重なるためです。
さらに、PartsテーブルのP1行が変更されます。これは、OrdersテーブルのP1行がトランザクションのWHEREテスト(quantity < 100)を満たすためです。
PartsテーブルのP1行への変更により、変更前の行の状態を示す履歴行が残されます。最初の行の終了時刻と2番目の行の開始時刻は、どちらも変更時点でのTEMPORAL_DATEでタイムスタンプが設定されていることに注目してください。
注文数増加トランザクション後のOrdersテーブル:
Order_ID | Part_ID | Quantity | Order_Validity |
---|---|---|---|
O1 | P1 | 60 | (2008-01-01, 2011-01-01) |
行は変更されません。これは、注文数増加トランザクションの時点での現在の時刻が2009-01-05であるためです。この現在の時刻を使用すると、Partsテーブルの2番目の行のみがトランザクションの対象となりますが、この行はWHEREテスト(discount >= 10)を満たしません。これは、先行する割引率引き下げトランザクションで変更が実施されているためです。