軽量トランザクションの使用

IF句を使用するINSERTおよびUPDATE文は、Compare and Set(CAS)とも呼ばれる軽量トランザクションをサポートしています。

IF句を使用するINSERTおよびUPDATE文は、Compare and Set(CAS)とも呼ばれる軽量トランザクションをサポートしています。一般的に、軽量トランザクションは、サイクリストのIDなど、一意である必要のある挿入操作に使用します。軽量トランザクションは安易に使用しないでください。CASコーディネーター間で往復が必要なため、操作のレイテンシーが4倍に増加するためです。

軽量トランザクションでは不等価条件がサポートされています。WHERE句内で<、<=、>、>=、!=およびINの演算子を使用して、軽量テーブルにクエリーできます。

INSERTIF NOT EXISTSを使用する場合、タイムスタンプは軽量トランザクションにより指定され、USING TIMESTAMPの指定は禁止されることに注意することが重要です。

手順

  • 新しいサイクリストとそのIDを挿入します。
    INSERT INTO cycling.cyclist_name (id, lastname, firstname)
      VALUES (4647f6d3-7bd2-4085-8d6c-1229351b5498, 'KNETEMANN', 'Roxxane')
      IF NOT EXISTS;
  • クエリーの最後に操作の述語を追加して、存在する行に対してCAS操作を実行します。たとえば、スペルミスのため、Roxane Knetemannのfirstnameをリセットします。
    UPDATE cycling.cyclist_name
      SET firstname = 'Roxane'
      WHERE id = 4647f6d3-7bd2-4085-8d6c-1229351b5498
      IF firstname = 'Roxxane';