我想将用户定义类型的特定字段声明为主键。 假设我有这个:
CREATE TYPE entity (
entity_id TEXT,
entity_type TEXT
);
CREATE TABLE some_object_by_entity_id (
someId TEXT,
mytext TEXT,
entity FROZEN<entity>,
PRIMARY KEY ((entity.entity_id), transaction_id)
) WITH CLUSTERING ORDER BY (transaction_id ASC);
...
现在我想以某种方式将entity_id从实体(用户定义的类型)作为我的主键,但Cassandra给了我语法错误。 我可以使用任何其他语法吗?
答案 0 :(得分:3)
你不能这样做,尝试将entity_id复制为表格的简单列:
CREATE TABLE some_object_by_entity_id (
entity_id TEXT,
someId TEXT,
mytext TEXT,
entity FROZEN<entity>,
PRIMARY KEY ((entity_id), transaction_id)
) WITH CLUSTERING ORDER BY (transaction_id ASC);
此解决方案的缺点是您需要从应用程序代码中手动保持表entity_id和冻结实体内的entity_id值。