我在Cassandra的前面有一个用golang编写的API服务器,因此我将gocql用作驱动程序。我想要的是如果有人尝试在Cassandra中创建重复项,则返回一个错误,因此我不仅需要幂等运算(可以通过if exist不存在子句来实现),还需要某种方式知道是否应用了查询。像SELECT WHERE TABLE FROM TABLE WHERE这样的初始请求primary_keys = blah LIMIT不是一个选项,因为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达到相同的目的?
谢谢!