我已经读过轻量级事务只支持带有“if”和“if exists”子句的update和insert语句。他们是否也支持带有“if exists”子句的delete语句。
例如:创建表用户(用户ID文本,电子邮件文本,主键(电子邮件))
从用户中删除userid ='kris'(如果存在)
轻量级事务是否支持上述删除语句?
答案 0 :(得分:4)
是的,CQL DELETE语句支持IF EXISTS
子句。来自DELETE documentation:
在Cassandra 2.0.7及更高版本中,您可以使用IF或IF EXISTS有条件地删除列。删除列类似于有条件地进行插入或更新。有条件的删除会产生不可忽视的性能成本,应谨慎使用。
但是,对于卡罗的观点,请注意最后一句话。从性能角度来看,条件删除不是免费的。
答案 1 :(得分:1)
真正的问题是:你为什么需要它? compare and set
对于处理竞争条件很有用 - 例如:我不希望两个用户使用相同的用户名注册。这样,使用相同用户名注册的第二次尝试将失败。但是,如果两个删除操作在数据上是幂等的,那么为什么要删除数据呢?删除具有隐式IF IT EXISTS
条件