Cassandra 文档和博客说,带有条件更新语句的批处理在分区的粒度上工作,分区由主键中的第一个键定义所以,我有以下键空间:
CREATE TABLE SOCIAL_PROFILE (
soc_net_type text,
soc_net_user_id text,
user_prof_id text,
PRIMARY KEY (soc_net_type, soc_net_user_id));
CREATE TABLE SOCIAL_PROFILE_CONTACT (
soc_prof_soc_net_type text,
soc_prof_soc_net_user_id text,
soc_net_user_id text,
PRIMARY KEY (soc_prof_soc_net_type, soc_prof_soc_net_user_id, soc_net_user_id));
并插入语句:
BEGIN BATCH
INSERT INTO social_profile (soc_net_type, soc_net_user_id, user_prof_id) VALUES ('vk', '1', '100') IF NOT EXISTS;
INSERT INTO social_profile_contact (soc_prof_soc_net_type, soc_prof_soc_net_user_id, soc_net_user_id) VALUES ('vk', '1', '2');
INSERT INTO social_profile_contact (soc_prof_soc_net_type, soc_prof_soc_net_user_id, soc_net_user_id) VALUES ('vk', '1', '3');
INSERT INTO social_profile_contact (soc_prof_soc_net_type, soc_prof_soc_net_user_id, soc_net_user_id) VALUES ('vk', '1', '4');
APPLY BATCH;
social_profile_contact.soc_prof_soc_net_type = social_profile.soc_net_type 它们都具有相同的值,应该在同一个分区中,但 Cassandra 抛出:错误请求:具有条件的批处理不能跨多个表
我在文档中没有找到有关表格的字眼,我做错了什么?
CQLSH 4.1.1 |卡桑德拉 2.0.11 |CQL 规范 3.1.1 |节俭协议 19.39.0
"具有条件的批处理不能跨多个表">
使用相同主键的两个不同的列族(表(仍然是两个不同的分区。
您需要在独立批处理中使用"如果不存在"来移动语句。 如果不存在,请在social_profile(soc_net_type、soc_net_user_id、user_prof_id(中插入值("VK"、"1"、"100"(;
带有条件(如果不存在(的批处理插入只能包含单个类型。