【发布时间】:2018-12-13 22:56:27
【问题描述】:
表 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
第二个插入语句没有覆盖第一行。但是第四个插入语句已经覆盖了第三行。
在这种情况下,聚类键是什么意思?
表 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);
在 table-2 中插入查询与 table-1 完全相同。 但是当我从 myitems 中选择 * 时,我很惊讶地看到只有最后插入的一行。其余所有行都丢失了。即,每个插入语句都会覆盖之前的记录。
listid | itemid | idesc | qty
--------+--------+--------+-----
1 | 1000 | orange | 50
问题: 为什么它在表 2 中的行为与表 1 不同? 在这种情况下,聚类键的含义是什么?为什么集群键被命名为“集群键”。和cassandra集群有关系吗?
更新问题: 我尝试对表 1 进行更新:
update mylistofitems set quantity = 100 where listid = 1 and itemid = 1000;
这表示错误 2200 缺少某些集群键。为什么会受到限制?
【问题讨论】: