У меня есть API-сервер, написанный на golang в передней части Cassandra, поэтому я использую gocql в качестве драйвера. Я хочу вернуть ошибку, если кто-то пытается создать дублированные записи в Cassandra, поэтому мне нужна не только идемпотентная операция (которую можно выполнить с помощью предложения if not Существует), но и каким-то образом узнать, был ли применен запрос или нет. Предварительный запрос, такой как SELECT primary_keys FROM TABLE WHERE primary_keys = blah LIMIT 1, не является опцией, так как операция INSERT должна быть атомарной.
Когда я запускаю приведенный ниже пример в cqlsh, Кассандра сообщает, применяется ли запрос:
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
Есть ли возможность достичь того же с помощью gocql, так как query.Exec () возвращает только ошибку?
Спасибо!