本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
UDT — 一组字段和数据类型,可用于在 Amazon Keyspaces 中定义单个列。的有效数据类型 UDTs 是所有支持的 Cassandra 数据类型,包括集合和你 UDTs 已经在同一个密钥空间中创建的其他数据类型。有关支持的 Cassandra 数据类型的更多信息,请参阅Cassandra 数据类型支持。
user_defined_type::= udt_name
udt_name::= [ keyspace_name '.' ] identifier
CREATE TYPE
使用CREATE TYPE
语句创建新类型。
语法
create_type_statement ::= CREATE TYPE [ IF NOT EXISTS ] udt_name '('field_definition ( ',' field_definition)* ')' field_definition::= identifier cql_type
其中:
-
IF NOT EXISTS
如果该类型已经存在,则可以CREATE TYPE
防止失败。(可选) -
udt_name
例如,是类型格式的 UDT 的完全限定名称。my_keyspace.my_type
如果使用USE
语句定义当前的密钥空间,则无需指定密钥空间名称。 field_definition
由名称和类型组成。
下表显示了允许的 UDT 名称的示例。第一列显示了在创建类型时如何输入名称,第二列显示了 Amazon Keyspaces 如何在内部设置名称的格式。Amazon Keyspaces 要求这样的操作使用格式化的名称。GetType
输入的名字 | 格式化名称 | 注意 |
---|---|---|
MY_UDT
|
my_udt |
如果不使用双引号,Amazon Keyspaces 会将所有大写字符转换为小写字母。 |
"MY_UDT"
|
MY_UDT |
使用双引号时,Amazon Keyspaces 会尊重大写字符,并从格式化的名称中删除双引号。 |
"1234"
|
1234 |
使用双引号时,名称可以以数字开头,Amazon Keyspaces 会从格式化的名称中删除双引号。 |
"Special_Ch@r@cters<>!!"
|
Special_Ch@r@cters<>!! |
使用双引号时,名称可以包含特殊字符,Amazon Keyspaces 会从格式化的名称中删除双引号。 |
"nested""""""quotes"
|
nested"""quotes |
Amazon Keyspaces 会从格式化名称中删除外部双引号和转义双引号。 |
示例
CREATE TYPE my_keyspace.phone (
country_code int,
number text
);
UDTs 如果嵌套的 UDT 已冻结,则可以嵌套。有关类型的默认值和配额的更多信息,请参阅Amazon Keyspaces UDT 配额和默认值。
CREATE TYPE my_keyspace.user (
first_name text,
last_name text,
phones FROZEN<phone>
);
有关展示如何创建的更多代码示例 UDTs,请参阅Amazon Keys UDTs paces 中的用户定义类型 ()。
DROP TYPE
使用DROP TYPE
语句删除 UDT。您只能删除其他类型或表未使用的类型。
语法
drop_type_statement ::= DROP TYPE [ IF EXISTS ] udt_name
其中:
-
IF EXISTS
DROP TYPE
防止在类型不存在时失败。(可选) -
udt_name
例如,是类型格式的 UDT 的完全限定名称。my_keyspace.my_type
如果使用USE
语句定义当前的密钥空间,则无需指定密钥空间名称。
示例
DROP TYPE udt_name;