Таблица-1:
create table mylistofitems (listid int,
itemid int,
quantity int,
itemdesc text,
primary key ((listid, itemid), itemdesc));
В приведенной выше таблице я делаю следующие вставки:
insert into mylistofitems (listid, itemid, itemdesc, quantity) values (1, 1000, 'apple', 5);
insert into mylistofitems (listid, itemid, itemdesc, quantity) values (1, 1000, 'banana', 10);
insert into mylistofitems (listid, itemid, itemdesc, quantity) values (1, 1000, 'orange', 6);
insert into mylistofitems (listid, itemid, itemdesc, quantity) values (1, 1000, 'orange', 50);
когда я выбираю * из списка mylistofitems, я получаю следующее:
listid | itemid | itemdesc | quantity
--------+--------+----------+----------
1 | 1000 | apple | 5
1 | 1000 | banana | 10
1 | 1000 | orange | 50
Второй оператор вставки НЕ перезаписал 1-ю строку. Но четвертый оператор вставки перезаписал третий ряд.
В этом контексте, что означает ключ кластеризации?
Таблица-2:
create table myitems (listid int,
itemid int,
idesc text,
qty int,
primary key (listid, itemid));
Я вставляю в таблицу 2 следующие записи:
insert into myitems (listid, itemid, idesc, qty) values (1, 1000,
'apple', 5);
insert into myitems (listid, itemid, idesc, qty) values (1, 1000, 'banana', 10);
insert into myitems (listid, itemid, idesc, qty) values (1, 1000, 'orange', 6);
insert into myitems (listid, itemid, idesc, qty) values (1, 1000, 'orange', 50);
Запросы на вставку в таблице-2 точно такие же, как и в таблице-1.
Но когда я выбираю * из myitems, я удивляюсь, увидев только одну строку, которая была вставлена последней. Остальные все ряды потеряны. т.е. каждый оператор вставки перезаписывал предыдущую запись.
listid | itemid | idesc | qty
--------+--------+--------+-----
1 | 1000 | orange | 50
Вопрос:
Почему он ведет себя по-разному в таблице-2 по сравнению с таблицей-1?
Что означает кластеризация ключа в этом контексте? Почему ключ кластеризации был назван «Ключ кластеризации». Это как-то связано с кластером кассандры?
Вопрос по обновлению:
Я попытался сделать обновление таблицы-1:
update mylistofitems set quantity = 100 where listid = 1 and itemid = 1000;
Это говорит об ошибке 2200, некоторые ключи кластеризации отсутствуют. Почему это ограничено?