3

我在 Cassandra 前面有一个用 golang 编写的 API Server,所以我使用 gocql 作为驱动程序。如果有人试图在 Cassandra 中创建重复条目,我想要返回一个错误,所以我不仅需要幂等操作(可以通过 if not exists 子句实现),而且还需要以某种方式知道是否应用了查询。像 SELECT primary_keys FROM TABLE WHERE primary_keys = blah LIMIT 1 这样的初步请求不是一个选项,因为 INSERT 操作应该是原子的。

当我在 cqlsh 中运行下面的示例时,Cassandra 会告诉我是否应用了查询:

    cqlsh> create table tests.demo (
       ... uuid text PRIMARY KEY,
       ... data text
       ... );

    cqlsh> insert into tests.demo (uuid, data) values ('test', 'data') if not exists;

     applied
    -----------
      True 

    cqlsh> insert into tests.demo (uuid, data) values ('test', 'data') if not exists;

       applied | uuid | data
    -----------+------+------
         False | test | data

由于 query.Exec() 只返回错误,是否有任何选项可以使用 gocql 实现相同的目标?

谢谢!

4

0 回答 0