用户定义的类型,包括它自己
User defined type including itself
好吧,也许我正在尝试一些愚蠢的事情,我得到的错误已经暗示我是这样的。但是在 C* 中是否可以在自身内部拥有一个用户定义的类型?
这就是结果。
CREATE TYPE udt (
id uuid,
child frozen <udt>,
childeren list <frozen <udt>>
);
InvalidRequest: code=2200 [Invalid query] message="Unknown type space.udt"
我可以想象必须声明类型。在它可以在内部使用之前。所以我自然会尝试这样的事情。
CREATE TYPE udt (
id uuid
);
ALTER TYPE udt ADD child frozen <udt>;
--ALTER TYPE udt ADD children list <frozen <udt>>;
InvalidRequest: code=2200 [Invalid query] message="Cannot add new field child of type space.udt to type space.udt as this would create a circular reference"
引入此错误消息是由于 CASSANDRA-10339 which was reported after this post
在关系数据库中,我知道这是一个问题,但为什么 C* 不能处理这个问题。无论如何,数据都没有引用自身,所以我希望 "circular referencing" 发生在 C* 本身中。但是为什么这里会出问题呢?它仅描述了数据的结构。对我来说,它就像一个 json 对象,其中对象结构在其自身内重复。
如果有人问我这个问题,我可能会回答 "Why would you want this?"
所以现实世界的例子就是一种决策树。所以我有一个 table questionaire
具有用户定义类型 question
。这个问题包含了接下来要问的问题。这可能是两个属性,在类型为 question
的是和否类型的问题的情况下。这有望澄清我正在尝试做的事情。
如果 Cassandra 不支持此类操作,那么您可能希望将数据结构存储为常规文本列中的 json 字符串(而不是 UDT)。
Cassandra 无法使用循环 UDT 引用,请参阅 CASSANDRA-10339 了解一些解释。
您应该将问题建模为 table,而不是 UDT。当然,您每次都必须发出查询才能得到下一个问题,但我看不到任何其他选择。
好吧,也许我正在尝试一些愚蠢的事情,我得到的错误已经暗示我是这样的。但是在 C* 中是否可以在自身内部拥有一个用户定义的类型?
这就是结果。
CREATE TYPE udt (
id uuid,
child frozen <udt>,
childeren list <frozen <udt>>
);
InvalidRequest: code=2200 [Invalid query] message="Unknown type space.udt"
我可以想象必须声明类型。在它可以在内部使用之前。所以我自然会尝试这样的事情。
CREATE TYPE udt (
id uuid
);
ALTER TYPE udt ADD child frozen <udt>;
--ALTER TYPE udt ADD children list <frozen <udt>>;
InvalidRequest: code=2200 [Invalid query] message="Cannot add new field child of type space.udt to type space.udt as this would create a circular reference"
引入此错误消息是由于 CASSANDRA-10339 which was reported after this post
在关系数据库中,我知道这是一个问题,但为什么 C* 不能处理这个问题。无论如何,数据都没有引用自身,所以我希望 "circular referencing" 发生在 C* 本身中。但是为什么这里会出问题呢?它仅描述了数据的结构。对我来说,它就像一个 json 对象,其中对象结构在其自身内重复。
如果有人问我这个问题,我可能会回答 "Why would you want this?"
所以现实世界的例子就是一种决策树。所以我有一个 table questionaire
具有用户定义类型 question
。这个问题包含了接下来要问的问题。这可能是两个属性,在类型为 question
的是和否类型的问题的情况下。这有望澄清我正在尝试做的事情。
如果 Cassandra 不支持此类操作,那么您可能希望将数据结构存储为常规文本列中的 json 字符串(而不是 UDT)。
Cassandra 无法使用循环 UDT 引用,请参阅 CASSANDRA-10339 了解一些解释。
您应该将问题建模为 table,而不是 UDT。当然,您每次都必须发出查询才能得到下一个问题,但我看不到任何其他选择。