Use lightweight transactions (LWTs)
INSERT and UPDATE statements using the IF
clause support lightweight transactions, also known as Compare and Set (CAS).
A common use for lightweight transactions is an insertion operation that must be unique, such as a user’s identification.
Lightweight transactions should not be used casually, as the latency of operations increases fourfold due to the round-trips necessary between the CAS coordinators.
Non-equal conditions for lightweight transactions are supported;
you can use <
, ⇐
, >
, >=
, !=
and IN
operators in WHERE
clauses to query lightweight tables.
It is important to note that using IF NOT EXISTS
on an INSERT
, the timestamp will be designated by the lightweight transaction, and USING TIMESTAMP is prohibited.
For example:
-
Insert a row that you will later change with a CAS operation. In this example, the cyclist’s name is misspelled.
INSERT INTO cycling.cyclist_name ( id, lastname, firstname ) VALUES ( 4647f6d3-7bd2-4085-8d6c-1229351b5498, 'KNETEMANN', 'Roxxane' ) IF NOT EXISTS;
-
Perform a CAS operation against the row by adding the predicate for the operation (
IF
) to the end of the query. In this example, thefirstname
column is changed if the existing value is the misspelled value:UPDATE cycling.cyclist_name SET firstname = 'Roxane' WHERE id = 4647f6d3-7bd2-4085-8d6c-1229351b5498 IF firstname = 'Roxxane';