Я немного запутался здесь с точки зрения терминологии для легких транзакций. Я не уверен, почему в большинстве литературы о Кассандре говорится, что он работает только для одного раздела.
Как и в случае, если я использую IF NOT EXISTS, IF EXISTS, он должен применяться ко всему первичному ключу, а не только к разделу. ключевой, как сказано в этом посте Как работает транзакция LWT- Легкий вес, когда мы используем IF NOT EXIST?
Однако в книге Cassandra, Руководстве по определению, я вижу В этом примере
INSERT INTO reservation.reservations_by_confirmation
(confirm_number,
hotel_id, start_date, end_date, room_number, guest_id) VALUES (
'RS2G0Z', 'NY456', '2020-06-08', '2020-06-10', 111, 1b4d86f4-ccff-
4256-a63d-45c905df2677) IF NOT EXISTS;
Эта команда проверяет, есть ли запись с ключом раздела, которая для этой таблицы состоит из номер подтверждения. Итак, давайте выясним, что произойдет, когда вы выполните эту команду во второй раз:
INSERT INTO reservation.reservations_by_confirmation
(confirm_number,
hotel_id, start_date, end_date, room_number, guest_id) VALUES (
'RS2G0Z', 'NY456', '2020-06-08', '2020-06-10', 111, 1b4d86f4-ccff-
4256-a63d-45c905df2677) IF NOT EXISTS;
В этом случае транзакция завершится неудачно, поскольку уже существует резервирование с номером «RS2G0Z» и cql sh услужливо возвращает строку, содержащую указание ошибки и значения, которые вы пытались ввести.
Теперь мой вопрос, если я запустлю другой запрос
INSERT INTO reservation.reservations_by_confirmation
(confirm_number,
hotel_id, start_date, end_date, room_number, guest_id) VALUES (
'RS2G0Z', 'NY466', '2020-06-08', '2020-06-10', 111, 1b4d86f4-ccff-
4256-a63d-45c905df2677) IF NOT EXISTS;
, который является другим первичным ключом, но с тем же ключом разделения, он должен преуспеть
Так что, когда в книге написано
This command checks to see if there is a record with the partition key
Разве это не неправильное утверждение? ? Пожалуйста, дайте мне знать, если я что-то неправильно понимаю