轻量级事务是否支持delete语句,如果存在?

时间:2015-04-05 06:50:11

标签: cassandra cql datastax cql3 datastax-java-driver

我已经读过轻量级事务只支持带有“if”和“if exists”子句的update和insert语句。他们是否也支持带有“if exists”子句的delete语句。

例如:创建表用户(用户ID文本,电子邮件文本,主键(电子邮件))

从用户中删除userid ='kris'(如果存在)

轻量级事务是否支持上述删除语句?

2 个答案:

答案 0 :(得分:4)

是的,CQL DELETE语句支持IF EXISTS子句。来自DELETE documentation

  

在Cassandra 2.0.7及更高版本中,您可以使用IF或IF EXISTS有条件地删除列。删除列类似于有条件地进行插入或更新。有条件的删除会产生不可忽视的性能成本,应谨慎使用。

但是,对于卡罗的观点,请注意最后一句话。从性能角度来看,条件删除不是免费的。

答案 1 :(得分:1)

真正的问题是:你为什么需要它? compare and set对于处理竞争条件很有用 - 例如:我不希望两个用户使用相同的用户名注册。这样,使用相同用户名注册的第二次尝试将失败。但是,如果两个删除操作在数据上是幂等的,那么为什么要删除数据呢?删除具有隐式IF IT EXISTS条件

相关问题