Cassandra CQL - команда обновления, чтобы не создавать новую строку

Есть ли способ предотвратить создание новой строки командой CQL Update, если ключ строки 'row1' не существует?

UPDATE columnfamily SET data = 'test data' WHERE key = 'row1';

person mesh    schedule 14.03.2012    source источник
comment
Кажется, это дубликат stackoverflow.com /вопросы/8154332/   -  person Tamil    schedule 15.03.2012


Ответы (1)


Обновление 2015-04-10:

Начиная с Cassandra 2.0 вы можете использовать облегченные транзакции для выполнить это. Имейте в виду, что, хотя они и называются «легковесными», эти запросы требуют гораздо больше работы в кластере Cassandra.

Спасибо @BSB за обновление.

Ответ до 2.0:

Нет. В отличие от SQL, в CQL Update и insert семантически одинаковы. Сначала вам нужно будет выполнить чтение, чтобы определить существование строки.

person psanford    schedule 14.03.2012
comment
Спасибо. Я обнаружил, что cassandra 1.1 сейчас находится в стадии бета-тестирования и включает CQL версии 3. Я не думаю, что вы знаете, будет ли это содержать что-либо, что могло бы решить эту проблему? - person mesh; 17.03.2012
comment
В C* существует концепция легковесных транзакций. Вы можете выполнить ОБНОВЛЕНИЕ... ЕСЛИ СУЩЕСТВУЕТ или ЕСЛИ X=Y - person BSB; 10.04.2015