時間値と日付値は、事象の順序を明確にするために誇張してあります。
部品(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つの例で説明します。