

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Benutzerdefinierte Typen () UDTs
<a name="cql.ddl.type"></a>

*UDT* — Eine Gruppierung von Feldern und Datentypen, die Sie verwenden können, um eine einzelne Spalte in Amazon Keyspaces zu definieren. Gültige Datentypen für UDTs sind alle unterstützten Cassandra-Datentypen, einschließlich Sammlungen und anderer, UDTs die Sie bereits im selben Schlüsselraum erstellt haben. Weitere Informationen zu den unterstützten Cassandra-Datentypen finden Sie unter. [Unterstützung des Cassandra-Datentyps](cassandra-apis.md#cassandra-data-type)

```
user_defined_type::= udt_name
udt_name::= [ keyspace_name '.' ] identifier
```

**Topics**
+ [CREATE TYPE](#cql.ddl.type.create)
+ [DROP TYPE](#cql.ddl.type.drop)

## CREATE TYPE
<a name="cql.ddl.type.create"></a>

Verwenden Sie die `CREATE TYPE` Anweisung, um einen neuen Typ zu erstellen.

 **Syntax**

```
create_type_statement ::=  CREATE TYPE [ IF NOT EXISTS ] udt_name
    '('field_definition ( ',' field_definition)* ')'
            field_definition::= identifier cql_type
```

Wobei Folgendes gilt:
+ `IF NOT EXISTS``CREATE TYPE`verhindert, dass ein Fehler auftritt, wenn der Typ bereits existiert. (Optional)
+ `udt_name`ist beispielsweise der vollständig qualifizierte Name der UDT im Typformat. `my_keyspace.my_type` Wenn Sie den aktuellen Schlüsselraum mit der `USE` Anweisung definieren, müssen Sie den Schlüsselraumnamen nicht angeben.
+ `field_definition`besteht aus einem Namen und einem Typ.

Die folgende Tabelle zeigt Beispiele für zulässige UDT-Namen. Die erste Spalte zeigt, wie Sie den Namen eingeben, wenn Sie den Typ erstellen, die zweite Spalte zeigt, wie Amazon Keyspaces den Namen intern formatiert. Amazon Keyspaces erwartet den formatierten Namen für Operationen wie. `GetType`


| Eingegebener Name | Formatierter Name | Hinweis | 
| --- | --- | --- | 
|  MY\$1UDT  | my\$1udt | Ohne doppelte Anführungszeichen konvertiert Amazon Keyspaces alle Großbuchstaben in Kleinbuchstaben. | 
|  "MY\$1UDT"  | MY\$1UDT | Bei doppelten Anführungszeichen respektiert Amazon Keyspaces die Großbuchstaben und entfernt die doppelten Anführungszeichen aus dem formatierten Namen. | 
|  "1234"  | 1234 | Bei doppelten Anführungszeichen kann der Name mit einer Zahl beginnen, und Amazon Keyspaces entfernt die doppelten Anführungszeichen aus dem formatierten Namen. | 
|  "Special\$1Ch@r@cters<>\$1\$1"  | Special\$1Ch@r@cters<>\$1\$1 | Bei doppelten Anführungszeichen kann der Name Sonderzeichen enthalten, und Amazon Keyspaces entfernt die doppelten Anführungszeichen aus dem formatierten Namen. | 
|  "nested""""""quotes"  | nested"""quotes | Amazon Keyspaces entfernt die äußeren doppelten Anführungszeichen und die doppelten Escape-Anführungszeichen aus dem formatierten Namen. | 

**Beispiele**

```
CREATE TYPE my_keyspace.phone (
    country_code int,
    number text
);
```

Sie können verschachteln, UDTs wenn das verschachtelte UDT eingefroren ist. Weitere Informationen zu Standardwerten und Kontingenten für Typen finden Sie unter. [Amazon Keyspaces UDT-Kontingente und Standardwerte](quotas.md#udt-table)

```
CREATE TYPE my_keyspace.user (
    first_name text,
    last_name text,
    phones FROZEN<phone>
);
```

Weitere Codebeispiele zur Erstellung finden Sie UDTs unter[Benutzerdefinierte Typen (UDTs) in Amazon Keyspaces](udts.md).

## DROP TYPE
<a name="cql.ddl.type.drop"></a>

Verwenden Sie die `DROP TYPE` Anweisung, um eine UDT zu löschen. Sie können nur einen Typ löschen, der nicht von einem anderen Typ oder einer anderen Tabelle verwendet wird.

 **Syntax**

```
drop_type_statement ::=  DROP TYPE [ IF EXISTS ] udt_name
```

Wobei Folgendes gilt:
+ `IF EXISTS``DROP TYPE`verhindert, dass ein Fehler auftritt, wenn der Typ nicht existiert. (Optional)
+ `udt_name`ist beispielsweise der vollständig qualifizierte Name der UDT im Typformat. `my_keyspace.my_type` Wenn Sie den aktuellen Schlüsselraum mit der `USE` Anweisung definieren, müssen Sie den Schlüsselraumnamen nicht angeben.

**Beispiel**

```
DROP TYPE udt_name;
```