Cassandra CAS 在 WHERE 和 IF 之间的区别



使用轻量级事务一文中的示例,此类事务的示例如下:

UPDATE cycling.cyclist_name
SET firstname = 'Roxane'
WHERE id = 4647f6d3-7bd2-4085-8d6c-1229351b5498
IF firstname = 'Roxxane';

这与用WHERE替换IF有何不同,如下所示:

UPDATE cycling.cyclist_name
SET firstname = 'Roxane'
WHERE id = 4647f6d3-7bd2-4085-8d6c-1229351b5498 
AND firstname = 'Roxxane';

我猜第二个不是在一个步骤中完成读取和写入,而是首先根据位置进行选择,然后应用更新,而第一个阻止其他进程在查询运行时写入数据库。

如果来自两个不同客户端的并发更新,第一个查询将确保一次只应用一个(假设不使用非串行一致性(,但对于第二次更新则不然。检查这个。

最新更新