根据定义,主键必须是唯一的。但这并不意味着你不能实现你的目标。你只需要改变你的方法/术语。
首先,如果您放宽将姓名+姓氏作为主键的目标,您可以执行以下操作:
CREATE TABLE users ( name text, surname text, age int, address text, PRIMARY KEY((name, surname),age) );
insert into users (name,surname,age,address) values ('name1','surname1',10,'address1');
insert into users (name,surname,age,address) values ('name1','surname1',30,'address2');
select * from users where name='name1' and surname='surname1';
name | surname | age | address
-------+----------+-----+----------
name1 | surname1 | 10 | address1
name1 | surname1 | 30 | address2
另一方面,如果您想确保地址也是共享的,那么您可能只想在用户记录中存储一组年龄。这可以通过以下方式实现:
CREATE TABLE users2 ( name text, surname text, age set<int>, address text, PRIMARY KEY(name, surname) );
insert into users2 (name,surname,age,address) values ('name1','surname1',{10,30},'address2');
select * from users2 where name='name1' and surname='surname1';
name | surname | address | age
-------+----------+----------+----------
name1 | surname1 | address2 | {10, 30}
所以它回到了你真正需要完成的事情。希望上面的例子能给你一些想法。