cassandra:删除与复合主键的一项匹配的所有记录

bre*_*mri 5 cassandra composite-primary-key kotlin

我有一个 cassandra 表,它有一个复合主键:(school_id, student_id)。假设我想删除该表中属于一所学校的所有记录。使用 cassandra 驱动程序,我尝试仅绑定school_id类似的内容:

val query = QueryBuilder.delete().all().from(session.loggedKeyspace, "mytable")
   .where(QueryBuilder.eq("school_id", QueryBuilder.bindMarker())
   .bind("school_1")
session.execute(query)
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:

com.datastax.driver.core.exceptions.InvalidQueryException: Missing mandatory PRIMARY KEY part student_id
Run Code Online (Sandbox Code Playgroud)

我可以在一所学校拥有数千名学生。我是否必须先查询表以获取所有不同的student_ids,然后使用此删除语句?

Hit*_*esh 3

是的,您必须提供主键的所有组成部分才能成功执行删除语句。您必须查询表以获取要删除的所有记录,然后通过传递 和 来执行删除school_id语句student_id

参考:删除| Cassandra 3.0 的 CQL