16.20 - 重複行の検証 - Teradata Database - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQLデータ操作言語

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Release Date
2019年3月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-162K-JPN
Language
日本語 (日本)

テーブルが(UNIQUE制約なしで)MULTISETとして作成されて重複行が可能になっている場合を除いて、システムは常に更新処理の際に重複行をチェックします。更新が実行される順序は、トランザクションの結果に影響することに注意してください。

次の例について考えてみます。

     CREATE SET TABLE t1 (
       a INTEGER,
       b INTEGER)
     PRIMARY INDEX (a);

     INSERT INTO t1 VALUES (1,1);

     INSERT INTO t1 VALUES (1,2);

     UPDATE t1
     SET b = b + 1
     WHERE a = 1; /* fails */
     UPDATE t1
     SET b = b - 1
     WHERE a = 1; /* succeeds */

最初のUPDATEリクエストは、重複行を作成するので失敗します。

UPDATEリクエストの順序が逆の場合には、UPDATEによって重複行が作成されないため、両方のUPDATEリクエストともに成功します。

     CREATE SET TABLE t1 (
       a INTEGER,
       b INTEGER)
     PRIMARY INDEX (a);

     INSERT INTO t1 VALUES (1,1);

     INSERT INTO t1 VALUES (1,2);

     UPDATE t1
     SET b = b - 1
     WHERE a = 1; /* succeeds */
     UPDATE t1
     SET b = b + 1
     WHERE a = 1; /* succeeds */

このモードは単純な更新と結合更新の両方の特徴です。それに対して、プライマリ インデックスまたはセカンダリ インデックスの値に影響を与える更新は、別個の削除および挿入操作として実装されます。