

 Amazon Redshift ne prendra plus en charge la création de nouveaux Python à UDFs partir du patch 198. UDFs Le Python existant continuera de fonctionner jusqu'au 30 juin 2026. Pour plus d’informations, consultez le [ billet de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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.

# ALTER TABLE
<a name="r_ALTER_TABLE"></a>

Cette commande modifie la définition d’une table Amazon Redshift ou d’une table externe Amazon Redshift Spectrum. Cette commande met à jour les valeurs et les propriétés définies par [CREATE TABLE](r_CREATE_TABLE_NEW.md) ou [CREATE EXTERNAL TABLE](r_CREATE_EXTERNAL_TABLE.md). Vous pouvez utiliser ALTER TABLE sur une vue pour la sécurité au niveau des lignes (RLS).

Vous ne pouvez pas exécuter ALTER TABLE sur une table externe au sein d’un bloc de transaction (BEGIN ... END). Pour plus d’informations sur les transactions, consultez [Niveaux d’isolement dans Amazon Redshift](c_serial_isolation.md). 

ALTER TABLE verrouille la table pour les opérations de lecture et d’écriture jusqu’à la fin de la transaction englobant l’opération ALTER TABLE, sauf s’il est indiqué spécifiquement dans la documentation que vous pouvez interroger des données ou effectuer d’autres opérations sur la table pendant sa modification.

## Privilèges requis
<a name="r_ALTER_TABLE-privileges"></a>

L’utilisateur qui modifie une table doit disposer des privilèges appropriés pour que la commande aboutisse. Selon la commande ALTER TABLE, l’un des privilèges suivants est requis.
+ Superuser
+ Utilisateurs disposant du privilège ALTER TABLE
+ Propriétaire de table disposant du privilège USAGE sur le schéma

## Syntaxe
<a name="r_ALTER_TABLE-synopsis"></a>

```
ALTER TABLE table_name
{
ADD table_constraint
| DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]
| OWNER TO new_owner
| RENAME TO new_name
| RENAME COLUMN column_name TO new_name
| ALTER COLUMN column_name TYPE updated_varchar_data_type_size
| ALTER COLUMN column_name ENCODE new_encode_type
| ALTER COLUMN column_name ENCODE encode_type,
| ALTER COLUMN column_name ENCODE encode_type, .....;
| ALTER DISTKEY column_name
| ALTER DISTSTYLE ALL
| ALTER DISTSTYLE EVEN
| ALTER DISTSTYLE KEY DISTKEY column_name
| ALTER DISTSTYLE AUTO
| ALTER [COMPOUND] SORTKEY ( column_name [,...] )
| ALTER SORTKEY AUTO
| ALTER SORTKEY NONE
| ALTER ENCODE AUTO
| ADD [ COLUMN ] column_name column_type
  [ DEFAULT default_expr ]
  [ ENCODE encoding ]
  [ NOT NULL | NULL ]
  [ COLLATE { CASE_SENSITIVE | CS | CASE_INSENSITIVE | CI } ] |
| DROP [ COLUMN ] column_name [ RESTRICT | CASCADE ] 
| ROW LEVEL SECURITY { ON | OFF } [ CONJUNCTION TYPE { AND | OR } ] [ FOR DATASHARES ]
| MASKING { ON | OFF } FOR DATASHARES }

where table_constraint is:

[ CONSTRAINT constraint_name ]
{ UNIQUE ( column_name [, ... ] )
| PRIMARY KEY ( column_name [, ... ] )
| FOREIGN KEY (column_name [, ... ] )
   REFERENCES  reftable [ ( refcolumn ) ]}

The following options apply only to external tables:

SET LOCATION { 's3://bucket/folder/' | 's3://bucket/manifest_file' }
| SET FILE FORMAT format |
| SET TABLE PROPERTIES ('property_name'='property_value')
| PARTITION ( partition_column=partition_value [, ...] )
  SET LOCATION { 's3://bucket/folder' |'s3://bucket/manifest_file' }
| ADD [IF NOT EXISTS]
    PARTITION ( partition_column=partition_value [, ...] ) LOCATION { 's3://bucket/folder' |'s3://bucket/manifest_file' }
    [, ... ]
| DROP PARTITION ( partition_column=partition_value [, ...] )
```

Pour réduire le temps d’exécution de la commande ALTER TABLE, vous pouvez combiner certaines clauses de la commande ALTER TABLE.

Amazon Redshift prend en charge les combinaisons suivantes des clauses ALTER TABLE :

```
ALTER TABLE tablename ALTER SORTKEY (column_list), ALTER DISTKEY column_Id;
ALTER TABLE tablename ALTER DISTKEY column_Id, ALTER SORTKEY (column_list);
ALTER TABLE tablename ALTER SORTKEY (column_list), ALTER DISTSTYLE ALL;
ALTER TABLE tablename ALTER DISTSTYLE ALL, ALTER SORTKEY (column_list);
```

## Parameters
<a name="r_ALTER_TABLE-parameters"></a>

 *table\$1name*   
Nom de la table à modifier. Spécifiez simplement le nom de la table ou choisissez le format *nom\$1schéma.nom\$1table* pour utiliser un schéma spécifique. Les tables externes doivent être qualifiées à l’aide d’un nom de schéma externe. Vous pouvez aussi spécifier un nom de vue si vous utilisez l’instruction ALTER TABLE pour renommer une vue ou modifier son propriétaire. La longueur maximale d’un nom de table est de 127 octets ; les noms plus longs sont tronqués à 127 octets. Vous pouvez utiliser des caractères multioctets UTF-8 jusqu’à un maximum de quatre octets. Pour plus d’informations sur les noms valides, consultez [Noms et identificateurs](r_names.md).

ADD *contrainte\$1table*   
Clause qui ajoute la contrainte spécifiée à la table. Pour obtenir les descriptions des valeurs de *contrainte\$1table* valides, consultez [CREATE TABLE](r_CREATE_TABLE_NEW.md).  
Vous ne pouvez pas ajouter une contrainte de clé primaire à une colonne acceptant la valeur null. Si la colonne a été créée à l’origine avec la contrainte NOT NULL, vous pouvez ajouter la contrainte de clé primaire.

DROP CONSTRAINT *nom\$1contrainte*   
Clause qui supprime la contrainte nommée de la table. Pour supprimer une contrainte, spécifiez son nom et non son type. Pour afficher le nom des contraintes de la table, exécutez la requête suivante.  

```
select constraint_name, constraint_type
from information_schema.table_constraints;
```

RESTRICT   
Clause qui supprime uniquement la contrainte spécifiée. RESTRICT est une option de DROP CONSTRAINT. RESTRICT ne peut pas être utilisée avec CASCADE. 

CASCADE   
Clause qui supprime la contrainte spécifiée ainsi que tout ce qui en dépend. CASCADE est une option de DROP CONSTRAINT. CASCADE ne peut pas être utilisée avec RESTRICT.

OWNER TO *nouveau\$1propriétaire*   
Clause qui modifie le propriétaire de la table (ou de la vue) avec la valeur *nouveau\$1propriétaire*.

RENAME TO *nouveau\$1nom*   
Clause qui renomme une table (ou une vue) selon la valeur spécifiée dans *nouveau\$1nom*. La longueur maximale d’un nom de table est de 127 octets ; les noms plus longs sont tronqués à 127 octets.  
Vous ne pouvez pas renommer une table permanente en un nom commençant par « \$1 ». Un nom de table commençant par « \$1 » indique une table temporaire.  
Vous ne pouvez pas renommer une table externe.

ALTER COLUMN *column\$1name* TYPE *updated\$1varchar\$1data\$1type\$1size*   
Clause qui modifie la taille d’une colonne définie en tant que type de données VARCHAR. Cette clause permet uniquement de modifier la taille d’un type de données VARCHAR. Prenez en compte les restrictions suivantes :  
+ Vous ne pouvez pas modifier une colonne avec les codages de compression BYTEDICT, RUNLENGTH ou K. TEXT255 TEXT32 
+ Vous ne pouvez pas réduire la taille en dessous de la taille maximale des données existantes. 
+ Vous ne pouvez pas modifier des colonnes avec des valeurs par défaut. 
+ Vous ne pouvez pas modifier des colonnes avec UNIQUE, PRIMARY KEY ou FOREIGN KEY. 
+ Vous ne pouvez pas modifier des colonnes dans un bloc de transaction (BEGIN ... END). Pour plus d’informations sur les transactions, consultez [Niveaux d’isolement dans Amazon Redshift](c_serial_isolation.md). 

ALTER COLUMN *column\$1name* ENCODE *new\$1encode\$1type*   
Clause qui modifie l’encodage de compression d’une colonne. Si vous spécifiez le codage de compression pour une colonne, la table n’est plus définie sur ENCODE AUTO. Pour obtenir des informations sur l’encodage de la compression, consultez [Compression de colonnes pour réduire la taille des données stockées](t_Compressing_data_on_disk.md).   
Lorsque vous modifiez l’encodage de compression pour une colonne, la table reste disponible à des fins d’interrogation.  
Prenez en compte les restrictions suivantes :  
+ Vous ne pouvez pas modifier une colonne avec le même encodage que celui actuellement défini pour la colonne. 
+ Vous ne pouvez pas modifier l’encodage d’une colonne dans une table avec une clé de tri entrelacée. 

ALTER COLUMN *column\$1name* ENCODE *encode\$1type*, ALTER COLUMN *column\$1name* ENCODE *encode\$1type*, .....;   
Clause qui modifie le codage de compression de plusieurs colonnes dans une seule commande. Pour obtenir des informations sur l’encodage de la compression, consultez [Compression de colonnes pour réduire la taille des données stockées](t_Compressing_data_on_disk.md).  
Lorsque vous modifiez l’encodage de compression pour une colonne, la table reste disponible à des fins d’interrogation.  
 Prenez en compte les restrictions suivantes :  
+ Vous ne pouvez pas modifier une colonne pour un type de codage identique ou différent plusieurs fois dans une seule commande.
+ Vous ne pouvez pas modifier une colonne avec le même encodage que celui actuellement défini pour la colonne. 
+ Vous ne pouvez pas modifier l’encodage d’une colonne dans une table avec une clé de tri entrelacée. 

ALTER DISTSTYLE ALL  
Clause qui modifie le style de distribution existant d’une table en `ALL`. Éléments à prendre en compte :  
+ ALTER DISTSYTLE, ALTER SORTKEY et VACUUM ne peuvent pas s’exécuter simultanément sur la même table. 
  + Si VACUUM est en cours d’exécution, l’exécution de ALTER DISTSTYLE ALL renvoie une erreur. 
  + Si ALTER DISTSTYLE ALL est en cours d’exécution, une opération VACCUM en arrière-plan ne démarre pas sur une table. 
+ La commande ALTER DISTSTYLE ALL n’est pas prise en charge pour les tables ayant des clés de tri entrelacées et les tables temporaires.
+ Si le style de distribution était précédemment défini sur AUTO, la table n’est plus candidate à l’optimisation automatique. 
Pour plus d’informations sur DISTSTYLE ALL, consultez [CREATE TABLE](r_CREATE_TABLE_NEW.md).

ALTER DISTSTYLE EVEN  
Clause qui modifie le style de distribution existant d’une table en `EVEN`. Éléments à prendre en compte :  
+ ALTER DISTSYTLE, ALTER SORTKEY et VACUUM ne peuvent pas être exécutés simultanément sur la même table. 
  + Si VACUUM est en cours d’exécution, l’exécution d’ALTER DISTSTYLE EVEN renvoie une erreur. 
  + Si ALTER DISTSTYLE EVEN est en cours d’exécution, une opération VACUUM en arrière-plan ne démarre pas sur une table. 
+ La commande ALTER DISTSTYLE EVEN n’est pas prise en charge pour les tables ayant des clés de tri entrelacées et des tables temporaires.
+ Si le style de distribution était précédemment défini sur AUTO, la table n’est plus candidate à l’optimisation automatique. 
Pour plus d’informations sur DISTSTYLE ALL, consultez [CREATE TABLE](r_CREATE_TABLE_NEW.md).

ALTER DISTKEY *nom\$1colonne* ou ALTER DISTSTYLE KEY DISTKEY *nom\$1colonne*  
Clause qui modifie la colonne utilisée en tant que clé de distribution d’une table. Éléments à prendre en compte :  
+ VACUUM et ALTER DISTKEY ne peuvent pas s’exécuter simultanément sur la même table. 
  + Si VACUUM est déjà en cours d’exécution, ALTER DISTKEY renvoie une erreur.
  + Si ALTER DISTKEY est en cours d’exécution, l’opération VACCUM en arrière-plan ne démarre pas sur une table.
  + Si ALTER DISTKEY est en cours d’exécution, l’opération VACCUM au premier plan renvoie une erreur.
+ Vous pouvez exécuter une seule commande ALTER DISTKEY sur une table simultanément. 
+ La commande ALTER DISTKEY n’est pas prise en charge pour les tables ayant des clés de tri entrelacées. 
+ Si le style de distribution était précédemment défini sur AUTO, la table n’est plus candidate à l’optimisation automatique. 
Lorsque DISTSTYLE KEY est spécifié, les données sont distribuées par les valeurs figurant dans la colonne DISTKEY. Pour plus d’informations sur DISTSTYLE, consultez [CREATE TABLE](r_CREATE_TABLE_NEW.md).

ALTER DISTSTYLE AUTO  
Clause qui modifie le style de distribution existant d’une table en AUTO.   
Lorsque vous modifiez un style de distribution sur AUTO, le style de distribution de la table est défini comme suit :   
+ Une petite table avec DISTSTYLE ALL est convertie en AUTO(ALL). 
+ Une petite table avec DISTSTYLE EVEN est convertie en AUTO(ALL). 
+ Une petite table avec DISTSTYLE KEY est convertie en AUTO(ALL). 
+ Une grande table avec DISTSTYLE ALL est convertie en AUTO(EVEN). 
+ Une grande table avec DISTSTYLE EVEN est convertie en AUTO(EVEN). 
+ Une grande table avec DISTSTYLE KEY est convertie en AUTO(KEY) et la DISTKEY est conservée. Dans ce cas, Amazon Redshift ne modifie pas la table.
Si Amazon Redshift détermine qu’un nouveau style de distribution ou une nouvelle clé améliorera les performances des requêtes, Amazon Redshift peut modifier le style de distribution ou la clé de votre table à l’avenir. Par exemple, Amazon Redshift peut convertir une table avec DISTSTYLE pour AUTO(KEY) en AUTO(EVEN), ou vice versa. Pour en savoir plus sur le comportement dans le cas où des clés de distribution sont modifiées, notamment sur le plan de la redistribution des données et des verrous, consultez [Recommandations Amazon Redshift Advisor](https://docs.aws.amazon.com/redshift/latest/dg/advisor-recommendations.html#alter-diststyle-distkey-recommendation).  
Pour plus d’informations sur DISTSTYLE AUTO, consultez [CREATE TABLE](r_CREATE_TABLE_NEW.md).   
Pour afficher le style de distribution appliqué à une table, interrogez la vue du catalogue système SVV\$1TABLE\$1INFO. Pour plus d'informations, consultez [SVV\$1TABLE\$1INFO](r_SVV_TABLE_INFO.md). Pour afficher les recommandations Amazon Redshift Advisor pour les tables, recherchez la vue catalogue système SVV\$1ALTER\$1TABLE\$1RECOMMENDATIONS. Pour plus d'informations, consultez [SVV\$1ALTER\$1TABLE\$1RECOMMENDATIONS](r_SVV_ALTER_TABLE_RECOMMENDATIONS.md). Pour afficher les actions effectuées par Amazon Redshift, interrogez la vue catalogue système SVL\$1AUTO\$1WORKER\$1ACTION. Pour plus d'informations, consultez [SVL\$1AUTO\$1WORKER\$1ACTION](r_SVL_AUTO_WORKER_ACTION.md). 

ALTER [COMPOUND] SORTKEY ( *column\$1name* [,...] )  
Clause qui modifie ou ajoute la clé de tri utilisée pour une table. ALTER SORTKEY n’est pas pris en charge pour les tables temporaires.  
Lorsque vous modifiez une clé de tri, l’encodage par compression des colonnes de la nouvelle clé de tri ou de la clé de tri originale peut changer. Si aucun encodage n’est explicitement défini pour la table, Amazon Redshift attribue automatiquement les codages de compression comme suit :  
+ Les colonnes qui sont définies comme des clés de tri se voient attribuer une compression RAW.
+ Les colonnes qui sont définies comme des types de données BOOLEAN, REAL ou DOUBLE PRECISION se voient attribuer une compression RAW.
+ Les colonnes définies comme SMALLINT, INTEGER, BIGINT, DECIMAL, DATE, TIME, TIMETZ, TIMESTAMP ou TIMESTAMPTZ sont soumises à une compression. AZ64
+ Les colonnes définies comme CHAR ou VARCHAR sont affectées à la compression LZO.
Éléments à prendre en compte :  
+ Vous pouvez définir 400 colonnes au maximum par table pour une clé de tri. 
+ Vous pouvez modifier une clé de tri entrelacée en clé de tri composée ou en aucune clé de tri. Toutefois, vous ne pouvez pas modifier une clé de tri composée par une clé de tri entrelacée. 
+ Si la clé de tri était précédemment définie sur AUTO, la table n’est plus candidate à l’optimisation automatique. 
+ Amazon Redshift recommande d’utiliser l’encodage RAW (sans compression) pour les colonnes définies comme des clés de tri. Lorsque vous modifiez une colonne pour la choisir comme clé de tri, la compression de la colonne passe en compression RAW (sans compression). Cela peut augmenter la quantité de stockage requise par la table. L’augmentation de la taille de la table dépend de la définition et du contenu spécifiques de la table. Pour plus d’informations sur la compression, consultez [encodages de compression](c_Compression_encodings.md). 
Les données sont chargées dans une table en fonction de la clé de tri. Lorsque vous modifiez la clé de tri, Amazon Redshift modifie l’ordre des données. Pour plus d’informations sur SORTKEY, consultez [CREATE TABLE](r_CREATE_TABLE_NEW.md).

ALTER TRUTKEY AUTO  
Clause qui modifie ou ajoute la clé de tri de la table cible à AUTO. ALTER SORTKEY AUTO n’est pas pris en charge pour les tables temporaires.   
Lorsque vous modifiez une clé de tri en AUTO, Amazon Redshift conserve la clé de tri existante de la table.   
Si Amazon Redshift détermine qu’une nouvelle clé de tri améliorera les performances des requêtes, Amazon Redshift peut modifier la clé de tri de votre table à l’avenir.   
Pour plus d’informations sur SORTKEY AUTO, consultez [CREATE TABLE](r_CREATE_TABLE_NEW.md).   
Pour afficher la clé de tri d'une table, interrogez la vue catalogue système SVV\$1TABLE\$1INFO. Pour plus d'informations, consultez [SVV\$1TABLE\$1INFO](r_SVV_TABLE_INFO.md). Pour afficher les recommandations Amazon Redshift Advisor pour les tables, recherchez la vue catalogue système SVV\$1ALTER\$1TABLE\$1RECOMMENDATIONS. Pour plus d'informations, consultez [SVV\$1ALTER\$1TABLE\$1RECOMMENDATIONS](r_SVV_ALTER_TABLE_RECOMMENDATIONS.md). Pour afficher les actions effectuées par Amazon Redshift, interrogez la vue catalogue système SVL\$1AUTO\$1WORKER\$1ACTION. Pour plus d'informations, consultez [SVL\$1AUTO\$1WORKER\$1ACTION](r_SVL_AUTO_WORKER_ACTION.md). 

ALTER SORTKEY NONE  
Clause qui supprime la clé de tri de la table cible.   
Si la clé de tri était précédemment définie sur AUTO, la table n’est plus candidate à l’optimisation automatique. 

ALTER ENCODE AUTO  
Clause qui modifie le type d’encodage des colonnes de la table cible en AUTO. Lorsque vous modifiez l’encodage en AUTO, Amazon Redshift conserve le type d’encodage existant des colonnes de la table. Ensuite, si Amazon Redshift détermine qu’un nouveau type d’encodage peut améliorer les performances de la requête, Amazon Redshift peut modifier le type d’encodage des colonnes de la table.   
Si vous modifiez une ou plusieurs colonnes pour spécifier un encodage, Amazon Redshift n’ajuste plus automatiquement l’encodage pour toutes les colonnes de la table. Les colonnes conservent les paramètres d’encodage actuels.  
Les actions suivantes n’affectent pas le paramètre ENCODE AUTO pour la table :   
+ Renommage de la table.
+ Modification du paramètre DISTSTYLE ou SORTKEY pour la table.
+ Ajout ou suppression d’une colonne avec un paramètre ENCODE.
+ Utilisation de l’option COMPUPDATE de la commande COPY. Pour plus d'informations, consultez [Opérations de chargement de données](copy-parameters-data-load.md).
Pour afficher l’encodage d’une table, interrogez la vue catalogue système SVV\$1TABLE\$1INFO. Pour plus d'informations, consultez [SVV\$1TABLE\$1INFO](r_SVV_TABLE_INFO.md).

RENAME COLUMN *nom\$1colonne* TO *nouveau\$1nom*   
Clause qui renomme une colonne selon la valeur spécifiée dans *nouveau\$1nom*. La longueur maximale d’un nom de colonne est de 127 octets ; les noms plus longs sont tronqués à 127 octets. Pour plus d’informations sur les noms valides, consultez [Noms et identificateurs](r_names.md).

ADD [ COLUMN ] *nom\$1colonne*   
Clause qui ajoute une colonne avec le nom spécifié à la table. Vous ne pouvez ajouter qu’une seule colonne à chaque instruction ALTER TABLE.  
Vous ne pouvez pas ajouter une colonne qui soit la clé de distribution (DISTKEY) ou une clé de tri (SORTKEY) de la table.  
 Vous ne pouvez pas utiliser une commande ALTER TABLE ADD COLUMN pour modifier les attributs de table et de colonne suivants :   
+ UNIQUE
+ PRIMARY KEY
+ REFERENCES (clé étrangère)
+ IDENTITY ou GENERATED BY DEFAULT AS IDENTITY
La longueur maximale d’un nom de colonne est de 127 octets ; les noms plus longs sont tronqués à 127 octets. Le nombre maximal de colonnes que vous pouvez définir dans une seule table est de 1 600.  
Les restrictions suivantes s’appliquent lorsque vous ajoutez une colonne à une table externe :  
+ Vous ne pouvez pas ajouter une colonne à une table externe dont les contraintes de table sont DEFAULT, ENCODE, NOT NULL ou NULL. 
+ Vous ne pouvez pas ajouter des colonnes à une table externe définie à l’aide du format de fichier AVRO. 
+ Si les pseudo-colonnes sont activées, le nombre maximal de colonnes que vous pouvez définir dans une seule table externe est 1 598. Si les pseudo-colonnes ne sont pas activées, le nombre maximal de colonnes que vous pouvez définir dans une seule table est 1 600. 
Pour plus d'informations, consultez [CREATE EXTERNAL TABLE](r_CREATE_EXTERNAL_TABLE.md).

 *type\$1colonne*   
Type de données de la colonne ajoutée. Pour les colonnes CHAR et VARCHAR, vous pouvez utiliser le mot-clé MAX au lieu de déclarer une longueur maximale. MAX définit la longueur maximale sur 4 096 octets pour CHAR ou 65 535 octets pour VARCHAR. La taille maximum d’un objet GEOMETRY est de 1 048 447 octets.   
Pour obtenir des informations sur les types de données pris en charge par Amazon Redshift, consultez [Types de données](c_Supported_data_types.md).

DEFAULT *expr\$1défaut*   <a name="alter-table-default"></a>
Clause qui attribue une valeur de données par défaut à la colonne. Le type de données de *expr\$1défaut* doit correspondre au type de données de la colonne. La valeur DEFAULT doit être une expression exempte de variable. Les sous-requêtes, les références croisées aux autres colonnes de la table active et les fonctions définies par l’utilisateur ne sont pas autorisées.  
*expr\$1défaut* est utilisé dans toute opération INSERT qui ne spécifie pas une valeur pour la colonne. Si aucune valeur par défaut n’est spécifiée, la valeur par défaut de la colonne est la valeur null.  
Si une opération COPY rencontre un champ null dans une colonne qui a une valeur DEFAULT et une contrainte NOT NULL, la commande COPY insère la valeur de *expr\$1défaut*.   
DEFAULT n’est pas pris en charge pour les tables externes.

ENCODE *encodage*   
Encodage de compression pour une colonne. Par défaut, Amazon Redshift gère automatiquement l’encodage de compression pour toutes les colonnes d’une table si vous ne spécifiez pas d’encodage de compression pour une colonne de la table ou si vous spécifiez l’option ENCODE AUTO pour la table.  
Si vous spécifiez l’encodage de compression pour une colonne de la table ou si vous ne spécifiez pas l’option ENCODE AUTO pour la table, Amazon Redshift attribue automatiquement l’encodage de compression aux colonnes pour lesquelles vous ne spécifiez pas l’encodage de compression comme suit :  
+ Toutes les colonnes de tables temporaires se voient attribuer une compression RAW par défaut.
+ Les colonnes qui sont définies comme des clés de tri se voient attribuer une compression RAW.
+ Les colonnes qui sont définies comme des types de données BOOLEAN, REAL, DOUBLE PRECISION ou GEOMETRY ou GEOGRAPHY se voient attribuer une compression RAW.
+ Les colonnes définies comme SMALLINT, INTEGER, BIGINT, DECIMAL, DATE, TIME, TIMETZ, TIMESTAMP ou TIMESTAMPTZ sont soumises à une compression. AZ64
+ Les colonnes définies comme CHAR, VARCHAR ou VARBYTE sont affectées à la compression LZO.
Si vous ne souhaitez pas qu’une colonne soit compressée, spécifiez explicitement un encodage RAW (brut).
Les encodages [compression encodings](c_Compression_encodings.md#compression-encoding-list) suivants sont pris en charge :  
+ AZ64
+ BYTEDICT
+ DELTA
+ DELTA32 K
+ LZO
+ MOSTLY8
+ MOSTLY16
+ MOSTLY32
+ RAW (aucune compression)
+ RUNLENGTH
+ TEXT255
+ TEXT32 K
+ ZSTD
ENCODE n’est pas pris en charge pour les tables externes.

NOT NULL \$1 NULL   
NOT NULL spécifie que la colonne n’est pas autorisée à contenir des valeurs null. NULL, valeur par défaut, spécifie que la colonne accepte les valeurs null.  
NOT NULL et NULL ne sont pas pris en charge pour les tables externes.

COLLATE \$1 CASE\$1SENSITIVE \$1 CS \$1 CASE\$1INSENSITIVE \$1 CI \$1  
Clause qui spécifie si la recherche de chaîne ou la comparaison sur la colonne est sensible à la casse ou insensible à la casse. La valeur par défaut est la même que la configuration actuelle de sensibilité à la casse de la base de données.  
Pour rechercher les informations de classement de la base de données, utilisez la commande suivante :  

```
SELECT db_collation();
                     
db_collation
----------------
 case_sensitive
(1 row)
```
CASE\$1SENSITIVE et CS sont interchangeables et donnent les mêmes résultats. De même, CASE\$1INSENSITIVE et CI sont interchangeables et donnent les mêmes résultats.

DROP [ COLUMN ] *nom\$1colonne*   
Nom de la colonne à supprimer de la table.  
Vous ne pouvez pas supprimer la dernière colonne d’une table. Une table doit avoir au moins une colonne.  
Vous ne pouvez pas supprimer une colonne qui est la clé de distribution (DISTKEY) ou une clé de tri (SORTKEY) de la table. Le comportement par défaut pour DROP COLUMN est RESTRICT si la colonne a des objets dépendants, tels qu’une vue, une clé primaire, une clé étrangère ou une restriction UNIQUE.  
Les restrictions suivantes s’appliquent lors de la suppression d’une colonne d’une table externe :  
+ Par ailleurs, vous ne pouvez pas supprimer une colonne d’une table externe si cette colonne est utilisée comme partition.
+ Vous ne pouvez pas supprimer une colonne d’une table externe définie à l’aide du format de fichier AVRO. 
+ RESTRICT et CASCADE sont ignorés pour les tables externes.
+ Vous ne pouvez pas supprimer les colonnes de la table de politique référencée dans la définition de la politique à moins de supprimer ou de dissocier la stratégie. Cela s’applique également lorsque l’option CASCADE est spécifiée. Vous pouvez supprimer d’autres colonnes dans le tableau des politiques.
Pour plus d’informations, consultez [CREATE EXTERNAL TABLE](r_CREATE_EXTERNAL_TABLE.md).

RESTRICT   
Lorsque RESTRICT est utilisé avec DROP COLUMN, cela signifie que la colonne à supprimer n’est pas supprimée dans les cas suivants :  
+ Si une vue définie référence la colonne en cours de suppression
+ Si une clé étrangère référence la colonne
+ Si la colonne fait partie d’une clé en plusieurs parties
RESTRICT ne peut pas être utilisée avec CASCADE.  
RESTRICT et CASCADE sont ignorés pour les tables externes.

CASCADE   
Lorsqu’il est utilisé avec DROP COLUMN, supprime la colonne spécifiée et tout ce qui dépend de cette colonne. CASCADE ne peut pas être utilisée avec RESTRICT.  
RESTRICT et CASCADE sont ignorés pour les tables externes.

Les options suivantes s’appliquent uniquement aux tables externes.

SET LOCATION \$1 ’s3://*compartiment/dossier*/’ \$1 ’s3://*compartiment/fichier\$1manifeste*’ \$1  
Chemin menant au dossier Amazon S3 qui contient les fichiers de données ou un fichier manifeste qui contient une liste de chemins d’objets Amazon S3. Les compartiments doivent se trouver dans la même région AWS que le cluster Amazon Redshift. Pour obtenir la liste des AWS régions prises en charge, consultez[Limitations propres à Amazon Redshift Spectrum](c-spectrum-considerations.md). Pour plus d’informations sur l’utilisation d’un fichier manifeste, consultez l’option LOCATION dans la référence [Parameters](r_CREATE_EXTERNAL_TABLE.md#r_CREATE_EXTERNAL_TABLE-parameters) CREATE EXTERNAL TABLE.

SET FILE FORMAT *format*  
Format des fichiers de données externes.  
Les formats valides sont les suivants :  
+ AVRO 
+ PARQUET
+ RCFILE
+ SEQUENCEFILE
+ TEXTFILE 

SET TABLE PROPERTIES ( ’*nom\$1propriété*’=’*valeur\$1propriété*’)   
Clause qui définit la définition de table pour des propriétés de table d’une table externe.   
Les propriétés de table sont sensibles à la casse.  
’numRows’=’*nombre\$1lignes*’   
Propriété qui définit la valeur numRows de la définition de table. Afin de mettre à jour explicitement les statistiques d’une table externe, définissez la propriété numRows pour indiquer la taille de la table. Amazon Redshift n'analyse pas les tables externes pour générer les statistiques de table utilisées par l'optimiseur de requête afin de générer un plan de requête. Si des statistiques de table ne sont pas définies pour une table externe, Amazon Redshift génère un plan d’exécution de requête. Ce plan se base sur une hypothèse selon laquelle les tables externes sont les tables les plus volumineuses et les tables locales les tables les plus petites.  
’skip.header.line.count’=’*nombre\$1lignes*’  
Propriété qui définit le nombre de lignes à ignorer au début de chaque fichier source.

PARTITION ( *colonne\$1partition*=*valeur\$1partition* [, ...] SET LOCATION \$1 ’s3://*compartiment*/*dossier*’ \$1 ’s3://*compartiment*/*fichier\$1manifeste*’ \$1  
Clause qui définit un nouvel emplacement pour une ou plusieurs colonnes de partition. 

ADD [ IF NOT EXISTS ] PARTITION ( *partition\$1column*=*partition\$1value* [, ...] ) LOCATION \$1 ’s3://*bucket*/*folder*’ \$1 ’s3://*bucket*/*manifest\$1file*’ \$1 [, ... ]  
Clause qui ajoute une ou plusieurs partitions. Vous pouvez spécifier plusieurs clauses PARTITION à l’aide d’une seule instruction ALTER TABLE … ADD.  
Si vous utilisez le AWS Glue catalogue, vous pouvez ajouter jusqu'à 100 partitions à l'aide d'une seule instruction ALTER TABLE.
La clause IF NOT EXISTS indique que si la partition spécifiée existe déjà, la commande ne doit effectuer aucun changement. Elle indique également que la commande doit renvoyer un message indiquant que la partition existe, plutôt que s’arrêter avec une erreur. Comme cette clause est utile à l’écriture de scripts, ce script n’échoue pas si ALTER TABLE tente d’ajouter une partition qui existe déjà. 

DROP PARTITION (*colonne\$1partition*=*valeur\$1partition* [, ...] )   
Clause qui supprime la partition spécifiée. La suppression d’une partition modifie uniquement les métadonnées des tables externes. Ceci n’a aucun impact sur les données sur Amazon S3.

ROW LEVEL SECURITY \$1 ON \$1 OFF \$1 [ CONJUNCTION TYPE \$1 AND \$1 OR \$1 ] [ FOR DATASHARES ]  
Clause qui active ou désactive la sécurité au niveau des lignes pour une relation.  
Lorsque la sécurité au niveau des lignes est activée pour une relation, vous pouvez lire uniquement les lignes auxquelles cette politique vous autorise à accéder. Si aucune politique ne vous accorde l’accès à la relation, vous ne pouvez voir aucune ligne pour la relation. Seuls les super-utilisateurs et les utilisateurs ou les rôles dotés du rôle `sys:secadmin` peuvent définir la clause ROW LEVEL SECURITY. Pour de plus amples informations, veuillez consulter [Sécurité au niveau des lignes](t_rls.md). Cette instruction est prise en charge sur la base de données connectée ou sur une base de données dotée d'autorisations fédérées Amazon Redshift. La clause FOR DATASHARES n'est pas prise en charge sur une base de données dotée d'autorisations fédérées Amazon Redshift.  
+ [ CONJUNCTION TYPE \$1 AND \$1 OR \$1 ] 

  Clause qui vous permet de choisir le type de conjonction de la politique de sécurité au niveau des lignes pour une relation. Lorsque plusieurs politiques de sécurité au niveau des lignes sont associées à une relation, vous pouvez les combiner avec la clause AND ou OR. Par défaut, Amazon Redshift associe les politiques RLS à la clause AND. Les super-utilisateurs, utilisateurs ou rôles disposant du rôle `sys:secadmin` peuvent utiliser cette clause pour définir le type de conjonction de la politique de sécurité au niveau des lignes pour une relation. Pour plus d’informations, consultez [Association de plusieurs politiques par utilisateur](t_rls_combine_policies.md). 
+ FOR DATASHARES

  Clause qui détermine s’il est possible d’accéder à une relation protégée par RLS sur les unités de partage des données. Par défaut, une relation protégée par RLS n’est pas accessible sur une unité de partage des données. Une commande ALTER TABLE ROW LEVEL SECURITY exécutée avec cette clause affecte uniquement la propriété d’accessibilité de l’unité de partage des données de la relation. La propriété ROW LEVEL SECURITY n’est pas modifiée. 

   Si vous rendez accessible une relation protégée par RLS via des unités de partage des données, la relation n’est pas sécurisée au niveau des lignes dans la base de données de l’unité de partage des données côté consommateur. La relation conserve sa propriété RLS du côté producteur. 

MASKING \$1 ON \$1 OFF \$1 FOR DATASHARES  
Clause qui détermine s’il est possible d’accéder à une relation protégée par DDM sur les unités de partage des données. Par défaut, une relation protégée par DDM n’est pas accessible sur une unité de partage des données. Si vous rendez accessible une relation protégée par DDM via des unités de partage des données, la relation ne sera pas protégée par masquage dans la base de données de l’unité de partage des données côté consommateur. La relation conserve sa propriété de masquage du côté producteur. Seuls les super-utilisateurs et les utilisateurs ou les rôles dotés du rôle `sys:secadmin` peuvent définir la clause MASKING FOR DATASHARES. Pour plus d’informations, consultez [Masquage dynamique des données](t_ddm.md). 

## Exemples
<a name="r_ALTER_TABLE-examples"></a>

Les exemples suivants montrent comment utiliser la commande ALTER TABLE.
+ [Exemples ALTER TABLE](r_ALTER_TABLE_examples_basic.md)
+ [Exemples de modification d’une table externe](r_ALTER_TABLE_external-table.md)
+ [Exemples ALTER TABLE ADD et DROP COLUMN](r_ALTER_TABLE_COL_ex-add-drop.md)

# Exemples ALTER TABLE
<a name="r_ALTER_TABLE_examples_basic"></a>

Les exemples suivants illustrent l’utilisation de base de la commande ALTER TABLE. 

## Renommer une table ou une vue
<a name="r_ALTER_TABLE_examples_basic-rename-a-table"></a>

La commande suivante permet de renommer la table USERS en USERS\$1BKUP : 

```
alter table users
rename to users_bkup;
```

 Vous pouvez également utiliser ce type de commande pour renommer une vue. 

## Modifier le propriétaire d’une table ou d’une vue
<a name="r_ALTER_TABLE_examples_basic-change-the-owner-of-a-table-or-view"></a>

La commande suivante remplace le propriétaire de la table VENUE par l’utilisateur DWUSER : 

```
alter table venue
owner to dwuser;
```

Les commandes suivantes créent une vue, puis modifient son propriétaire : 

```
create view vdate as select * from date;
alter table vdate owner to vuser;
```

## Renommer une colonne
<a name="r_ALTER_TABLE_examples_basic-rename-a-column"></a>

La commande suivante renomme la colonne VENUESEATS de la table VENUE en VENUESIZE : 

```
alter table venue
rename column venueseats to venuesize;
```

## Supprimer une contrainte de table
<a name="r_ALTER_TABLE_examples_drop-constraint"></a>

Pour supprimer une contrainte de table, telle qu’une contrainte de clé primaire, de clé étrangère ou unique, commencez par rechercher le nom interne de la contrainte. Ensuite, spécifiez le nom de la contrainte dans la commande ALTER TABLE. L’exemple suivant recherche les contraintes de la table CATEGORY, puis supprime la clé principale avec le nom `category_pkey`. 

```
select constraint_name, constraint_type
from information_schema.table_constraints
where constraint_schema ='public'
and table_name = 'category';

constraint_name | constraint_type
----------------+----------------
category_pkey   | PRIMARY KEY

alter table category
drop constraint category_pkey;
```

## Modifier une colonne VARCHAR
<a name="r_ALTER_TABLE_examples_alter-column"></a>

Pour conserver le stockage, vous pouvez définir une table initialement avec des colonnes VARCHAR dotées de la taille minimale nécessaire pour vos données actives. Vous pouvez modifier ultérieurement la table afin d’augmenter la taille de la colonne si plus tard vous avez besoin d’accueillir plus de chaînes. 

L’exemple suivant augmente la taille de la colonne EVENTNAME à VARCHAR (300). 

```
alter table event alter column eventname type varchar(300);
```

## Modifier une colonne VARBYTE
<a name="r_ALTER_TABLE_examples_alter-varbyte-column"></a>

Pour conserver le stockage, vous pouvez définir une table initialement avec des colonnes VARBYTE dotées de la taille minimale nécessaire pour vos données actives. Vous pouvez modifier ultérieurement la table afin d’augmenter la taille de la colonne si plus tard vous avez besoin d’accueillir plus de chaînes. 

L’exemple suivant augmente la taille de la colonne EVENTNAME à VARBYTE(300). 

```
alter table event alter column eventname type varbyte(300);
```

## Modifier l’encodage de la compression d’une colonne
<a name="r_ALTER_TABLE_examples_alter-column-encoding"></a>

Vous pouvez modifier le codage de compression d’une colonne. Vous trouverez ci-dessous une série d’exemples illustrant cette approche. La définition de table pour ces exemples est la suivante.

```
create table t1(c0 int encode lzo, c1 bigint encode zstd, c2 varchar(16) encode lzo, c3 varchar(32) encode zstd);
```

L'instruction suivante modifie le codage de compression de la colonne c0 du codage LZO au codage. AZ64 

```
alter table t1 alter column c0 encode az64;
```

L'instruction suivante modifie le codage de compression de la colonne c1 du codage standard Z au AZ64 codage. 

```
alter table t1 alter column c1 encode az64;
```

L’instruction suivante modifie l’encodage de compression pour la colonne c2 de l’encodage LZO à l’encodage Byte-dictionary. 

```
alter table t1 alter column c2 encode bytedict;
```

L’instruction suivante modifie l’encodage de compression pour la colonne c3 de l’encodage Zstandard à l’encodage Runlength. 

```
alter table t1 alter column c3 encode runlength;
```

## Modifier une colonne DISTSTYLE KEY DISTKEY
<a name="r_ALTER_TABLE_examples_alter-distkey"></a>

Les exemples suivants montre comment modifier les colonnes DISTSTYLE et DISTKEY d’une table.

Créez une table avec un style de distribution EVEN. La vue SVV\$1TABLE\$1INFO montre que la colonne DISTSTYLE est EVEN. 

```
create table inventory(
  inv_date_sk int4 not null ,
  inv_item_sk int4 not null ,
  inv_warehouse_sk int4 not null ,
  inv_quantity_on_hand int4
) diststyle even;

Insert into inventory values(1,1,1,1);

select "table", "diststyle" from svv_table_info;

   table   |   diststyle
-----------+----------------
 inventory |     EVEN
```

Modifiez la table DISTKEY en `inv_warehouse_sk`. La vue SVV\$1TABLE\$1INFO montre la colonne `inv_warehouse_sk` en tant que clé de distribution résultante. 

```
alter table inventory alter diststyle key distkey inv_warehouse_sk;

select "table", "diststyle" from svv_table_info;

   table   |       diststyle
-----------+-----------------------
 inventory | KEY(inv_warehouse_sk)
```

Modifiez la table DISTKEY en `inv_item_sk`. La vue SVV\$1TABLE\$1INFO montre la colonne `inv_item_sk` en tant que clé de distribution résultante. 

```
alter table inventory alter distkey inv_item_sk;

select "table", "diststyle" from svv_table_info;

   table   |       diststyle
-----------+-----------------------
 inventory | KEY(inv_item_sk)
```

## Modifier une table en DISTSTYLE ALL
<a name="r_ALTER_TABLE_examples_alter-diststyle-all"></a>

Les exemples suivants montrent comment modifier une table en DISTSTYLE ALL.

Créez une table avec un style de distribution EVEN. La vue SVV\$1TABLE\$1INFO montre que la colonne DISTSTYLE est EVEN. 

```
create table inventory(
  inv_date_sk int4 not null ,
  inv_item_sk int4 not null ,
  inv_warehouse_sk int4 not null ,
  inv_quantity_on_hand int4
) diststyle even;

Insert into inventory values(1,1,1,1);

select "table", "diststyle" from svv_table_info;

   table   |   diststyle
-----------+----------------
 inventory |     EVEN
```

Modifiez la table DISTSTYLE en ALL. La vue SVV\$1TABLE\$1INFO affiche le DISTSYTLE modifié. 

```
alter table inventory alter diststyle all;

select "table", "diststyle" from svv_table_info;

   table   |   diststyle
-----------+----------------
 inventory |     ALL
```

## Modifier une table SORTKEY
<a name="r_ALTER_TABLE_examples_alter-sortkey"></a>

Vous pouvez modifier une table pour avoir une clé de tri composée ou aucune clé de tri.

Dans la définition de table suivante, la table `t1` est définie par une clé de tri entrelacée.

```
create table t1 (c0 int, c1 int) interleaved sortkey(c0, c1);
```

La commande suivante modifie la table d’une clé de tri entrelacée en une clé de tri composée.

```
alter table t1 alter sortkey(c0, c1);
```

La commande suivante modifie la table pour supprimer la clé de tri entrelacée.

```
alter table t1 alter sortkey none;
```

Dans la définition de table suivante, la table `t1` est définie avec une colonne `c0` comme clé de tri.

```
create table t1 (c0 int, c1 int) sortkey(c0);
```

La commande suivante modifie la table `t1` en clé de tri composée.

```
alter table t1 alter sortkey(c0, c1);
```

## Modifier une table en ENCODE AUTO
<a name="r_ALTER_TABLE_examples_alter-encode-auto"></a>

L’exemple suivant montre comment modifier une table en ENCODE AUTO. 

La définition de table pour cet exemple est la suivante. `c0`La colonne est définie avec le type de codage AZ64, et la colonne `c1` est définie avec le type de codage LZO.

```
create table t1(c0 int encode AZ64, c1 varchar encode LZO);
```

Pour cette table, l’instruction suivante modifie l’encodage en AUTO.

```
alter table t1 alter encode auto;
```

L’exemple suivant illustre comment modifier une table pour supprimer le paramètre ENCODE AUTO. 

La définition de table pour cet exemple est la suivante. Les colonnes de la table sont définies sans encodage. Dans ce cas, l’encodage est par défaut ENCODE AUTO.

```
create table t2(c0 int, c1 varchar);
```

Pour cette table, l’instruction suivante modifie l’encodage de la colonne c0 en LZO. L’encodage de la table n’est plus défini sur ENCODE AUTO.

```
alter table t2 alter column c0 encode lzo;;
```

## Modifier le contrôle de sécurité au niveau des lignes
<a name="r_ALTER_TABLE_examples_basic-rls"></a>

La commande suivante désactive la politique RLS pour la table : 

```
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY OFF;
```

La commande suivante active RLS pour la table : 

```
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON;
```

La commande suivante active RLS pour la table et la rend accessible sur les unités de partage des données : 

```
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON;
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY FOR DATASHARES OFF;
```

La commande suivante active RLS pour la table et la rend inaccessible sur les unités de partage des données : 

```
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON;
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY FOR DATASHARES ON;
```

La commande suivante active RLS et définit le type de conjonction RLS sur OR pour la table : 

```
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON CONJUNCTION TYPE OR;
```

La commande suivante active RLS et définit le type de conjonction RLS sur AND pour la table : 

```
ALTER TABLE tickit_category_redshift ROW LEVEL SECURITY ON CONJUNCTION TYPE AND;
```

# Exemples de modification d’une table externe
<a name="r_ALTER_TABLE_external-table"></a>

Les exemples suivants utilisent un compartiment Amazon S3 situé dans la région USA Est (Virginie du Nord) (`us-east-1`) Région AWS et les exemples de tables créés [Exemples](r_CREATE_EXTERNAL_TABLE_examples.md) pour CREATE TABLE. Pour plus d’informations sur l’utilisation des partitions avec des tables externes, consultez [Partitionnement des tables externes Redshift Spectrum](c-spectrum-external-tables.md#c-spectrum-external-tables-partitioning). 

L’exemple suivant définit la propriété de table numRows pour la table externe SPECTRUM.SALES sur 170 000 lignes.

```
alter table spectrum.sales
set table properties ('numRows'='170000');
```

L’exemple suivant modifie l’emplacement de la table externe SPECTRUM.SALES.

```
alter table spectrum.sales
set location 's3://redshift-downloads/tickit/spectrum/sales/';
```

L’exemple suivant définit le format de la table externe SPECTRUM.SALES sur Parquet.

```
alter table spectrum.sales
set file format parquet;
```

L’exemple suivant ajoute une partition pour la table SPECTRUM.SALES\$1PART.

```
alter table spectrum.sales_part
add if not exists partition(saledate='2008-01-01')
location 's3://redshift-downloads/tickit/spectrum/sales_partition/saledate=2008-01/';
```

L’exemple suivant ajoute trois partitions pour la table SPECTRUM.SALES\$1PART.

```
alter table spectrum.sales_part add if not exists
partition(saledate='2008-01-01')
location 's3://redshift-downloads/tickit/spectrum/sales_partition/saledate=2008-01/'
partition(saledate='2008-02-01')
location 's3://redshift-downloads/tickit/spectrum/sales_partition/saledate=2008-02/'
partition(saledate='2008-03-01')
location 's3://redshift-downloads/tickit/spectrum/sales_partition/saledate=2008-03/';
```

L’exemple suivant modifie SPECTRUM.SALES\$1PART afin de supprimer la partition avec `saledate='2008-01-01''`.

```
alter table spectrum.sales_part
drop partition(saledate='2008-01-01');
```

L’exemple suivant définit un nouveau chemin d’accès Amazon S3 pour la partition avec `saledate='2008-01-01'`.

```
alter table spectrum.sales_part
partition(saledate='2008-01-01')
set location 's3://redshift-downloads/tickit/spectrum/sales_partition/saledate=2008-01-01/';
```

L’exemple suivant remplace le nom de `sales_date` par `transaction_date`. 

```
alter table spectrum.sales rename column sales_date to transaction_date;
```

L’exemple suivant définit le mappage de colonne sur le mappage par position pour une table externe qui utilise le format Optimized Row Columnar (ORC).

```
alter table spectrum.orc_example
set table properties('orc.schema.resolution'='position');
```

L’exemple suivant définit le mappage de colonne sur le mappage par nom pour une table externe qui utilise le format ORC.

```
alter table spectrum.orc_example
set table properties('orc.schema.resolution'='name');
```

# Exemples ALTER TABLE ADD et DROP COLUMN
<a name="r_ALTER_TABLE_COL_ex-add-drop"></a>

Les exemples suivants montrent comment utiliser ALTER TABLE pour ajouter, puis supprimer une colonne de table de base, ainsi que pour supprimer une colonne avec un objet dépendant. 

## ADD puis DROP une colonne de base
<a name="r_ALTER_TABLE_COL_ex-add-then-drop-a-basic-column"></a>

L’exemple suivant ajoute une colonne FEEDBACK\$1SCORE autonome à la table USERS. Cette colonne contient simplement un nombre entier et la valeur par défaut de cette colonne est NULL (pas de score de commentaire). 

Commencez par interroger la table du catalogue PG\$1TABLE\$1DEF pour afficher le schéma de la table USERS : 

```
column        | type                   | encoding | distkey | sortkey
--------------+------------------------+----------+---------+--------
userid        | integer                | delta    | true    |       1
username      | character(8)           | lzo      | false   |       0
firstname     | character varying(30)  | text32k  | false   |       0
lastname      | character varying(30)  | text32k  | false   |       0
city          | character varying(30)  | text32k  | false   |       0
state         | character(2)           | bytedict | false   |       0
email         | character varying(100) | lzo      | false   |       0
phone         | character(14)          | lzo      | false   |       0
likesports    | boolean                | none     | false   |       0
liketheatre   | boolean                | none     | false   |       0
likeconcerts  | boolean                | none     | false   |       0
likejazz      | boolean                | none     | false   |       0
likeclassical | boolean                | none     | false   |       0
likeopera     | boolean                | none     | false   |       0
likerock      | boolean                | none     | false   |       0
likevegas     | boolean                | none     | false   |       0
likebroadway  | boolean                | none     | false   |       0
likemusicals  | boolean                | none     | false   |       0
```

Maintenant, ajoutez la colonne feedback\$1score : 

```
alter table users
add column feedback_score int
default NULL;
```

Sélectionnez la colonne FEEDBACK\$1SCORE de la table USERS pour vérifier qu’elle a été ajoutée : 

```
select feedback_score from users limit 5;

feedback_score
----------------
NULL
NULL
NULL
NULL
NULL
```

Supprimez la colonne pour rétablir le DDL d’origine : 

```
alter table users drop column feedback_score;
```

## Suppression d’une colonne avec un objet dépendant
<a name="r_ALTER_TABLE_COL_ex-dropping-a-column-with-a-dependent-object"></a>

L’exemple suivant supprime une colonne qui a un objet dépendant. En conséquence, l’objet dépendant est également supprimé. 

Pour commencer, ajoutez à nouveau la colonne FEEDBACK\$1SCORE à la table USERS : 

```
alter table users
add column feedback_score int
default NULL;
```

Ensuite, créez une vue de la table USERS appelée USERS\$1VIEW : 

```
create view users_view as select * from users;
```

Maintenant, essayez de supprimer la colonne FEEDBACK\$1SCORE de la table USERS. Cette instruction DROP utilise le comportement par défaut (RESTRICT) : 

```
alter table users drop column feedback_score;
```

Amazon Redshift affiche un message d’erreur indiquant que la colonne ne peut pas être supprimée, car un autre objet en dépend. 

Essayez à nouveau de supprimer la colonne FEEDBACK\$1SCORE, cette fois en spécifiant CASCADE pour supprimer tous les objets dépendants : 

```
alter table users
drop column feedback_score cascade;
```