使用轻量级事务一文中的示例,此类事务的示例如下:
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';
我猜第二个不是在一个步骤中完成读取和写入,而是首先根据位置进行选择,然后应用更新,而第一个阻止其他进程在查询运行时写入数据库。
如果来自两个不同客户端的并发更新,第一个查询将确保一次只应用一个(假设不使用非串行一致性(,但对于第二次更新则不然。检查这个。