

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Types définis par l'utilisateur () UDTs
<a name="cql.ddl.type"></a>

*UDT* : regroupement de champs et de types de données que vous pouvez utiliser pour définir une seule colonne dans Amazon Keyspaces. Les types de données valides pour UDTs sont tous les types de données Cassandra pris en charge, y compris les collections et les autres UDTs que vous avez déjà créées dans le même keyspace. Pour plus d'informations sur les types de données Cassandra pris en charge, consultez[Support des types de données Cassandra](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>

Utilisez l'`CREATE TYPE`instruction pour créer un nouveau type.

 **Syntaxe**

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

Où :
+ `IF NOT EXISTS``CREATE TYPE`empêche l'échec si le type existe déjà. (Facultatif)
+ `udt_name`est le nom complet de l'UDT au format type, par exemple. `my_keyspace.my_type` Si vous définissez le keyspace actuel avec l'`USE`instruction, il n'est pas nécessaire de spécifier le nom du keyspace.
+ `field_definition`se compose d'un nom et d'un type.

Le tableau suivant présente des exemples de noms UDT autorisés. La première colonne indique comment saisir le nom lorsque vous créez le type, la deuxième colonne montre comment Amazon Keyspaces met en forme le nom en interne. Amazon Keyspaces attend le nom formaté pour des opérations telles que. `GetType`


| Nom saisi | Nom formaté | Remarque | 
| --- | --- | --- | 
|  MY\$1UDT  | my\$1udt | Sans guillemets, Amazon Keyspaces convertit tous les caractères majuscules en minuscules. | 
|  "MY\$1UDT"  | MY\$1UDT | Avec les guillemets, Amazon Keyspaces respecte les majuscules et supprime les guillemets du nom formaté. | 
|  "1234"  | 1234 | Avec des guillemets, le nom peut commencer par un chiffre, et Amazon Keyspaces supprime les guillemets du nom formaté. | 
|  "Special\$1Ch@r@cters<>\$1\$1"  | Special\$1Ch@r@cters<>\$1\$1 | Avec des guillemets, le nom peut contenir des caractères spéciaux, et Amazon Keyspaces supprime les guillemets du nom formaté. | 
|  "nested""""""quotes"  | nested"""quotes | Amazon Keyspaces supprime les guillemets extérieurs et les guillemets d'échappement du nom formaté. | 

**Exemples**

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

Vous pouvez nicher UDTs si l'UDT imbriqué est gelé. Pour plus d'informations sur les valeurs par défaut et les quotas pour les types, consultez[Quotas UDT et valeurs par défaut d'Amazon Keyspaces](quotas.md#udt-table).

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

Pour d'autres exemples de code montrant comment créer UDTs, consultez[Types définis par l'utilisateur (UDTs) dans Amazon Keyspaces](udts.md).

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

Utilisez l'`DROP TYPE`instruction pour supprimer un UDT. Vous ne pouvez supprimer qu'un type qui n'est pas utilisé par un autre type ou une autre table.

 **Syntaxe**

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

Où :
+ `IF EXISTS``DROP TYPE`empêche l'échec si le type n'existe pas. (Facultatif)
+ `udt_name`est le nom complet de l'UDT au format type, par exemple. `my_keyspace.my_type` Si vous définissez le keyspace actuel avec l'`USE`instruction, il n'est pas nécessaire de spécifier le nom du keyspace.

**Exemple**

```
DROP TYPE udt_name;
```