View a markdown version of this page

ALTER TABLE - Amazon Aurora DSQL

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

ALTER TABLE modifie la définition d’une table.

Syntaxe prise en charge

ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] action [, ... ] ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] RENAME [ COLUMN ] column_name TO new_column_name ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] RENAME CONSTRAINT constraint_name TO new_constraint_name ALTER TABLE [ IF EXISTS ] name RENAME TO new_name ALTER TABLE [ IF EXISTS ] name SET SCHEMA new_schema ALTER TABLE ASYNC [ IF EXISTS ] [ ONLY ] name [ * ] VALIDATE CONSTRAINT constraint_name where action is one of: ADD [ COLUMN ] [ IF NOT EXISTS ] column_name data_type [ STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } ] DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ] ALTER [ COLUMN ] column_name SET DEFAULT expression ALTER [ COLUMN ] column_name DROP DEFAULT ALTER [ COLUMN ] column_name DROP NOT NULL ALTER [ COLUMN ] column_name DROP EXPRESSION [ IF EXISTS ] ALTER [ COLUMN ] column_name ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( sequence_options ) ] ALTER [ COLUMN ] column_name { SET GENERATED { ALWAYS | BY DEFAULT } | SET sequence_option | RESTART [ [ WITH ] restart ] } [...] ALTER [ COLUMN ] column_name DROP IDENTITY [ IF EXISTS ] ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } ADD table_constraint NOT VALID ADD table_constraint_using_index DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ] OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } and table_constraint is: [ CONSTRAINT constraint_name ] CHECK ( expression ) and table_constraint_using_index is: [ CONSTRAINT constraint_name ] UNIQUE USING INDEX index_name

Description

ADD [ COLUMN ] [ IF NOT EXISTS ]

Ce formulaire ajoute une nouvelle colonne au tableau, en utilisant la même syntaxe queCREATE TABLE. S'il IF NOT EXISTS est spécifié et qu'une colonne portant ce nom existe déjà, aucune erreur n'est renvoyée.

DROP [ COLUMN ] [ IF EXISTS ]

Ce formulaire supprime une colonne d'un tableau. Les index et les contraintes de table impliquant la colonne seront automatiquement supprimés, à l'exception des contraintes de clé primaire. La suppression des colonnes de clé primaire n'est pas prise en charge. Les statistiques multivariées faisant référence à la colonne supprimée seront également supprimées si la suppression de la colonne fait en sorte que les statistiques contiennent des données pour une seule colonne. Vous devrez indiquer CASCADE si quelque chose en dehors du tableau dépend de la colonne, par exemple des références de clés étrangères ou des vues. Si elle IF EXISTS est spécifiée et que la colonne n'existe pas, aucune erreur n'est renvoyée. Dans ce cas, un avis est émis à la place.

SET/DROP DEFAULT

Ces formulaires définissent ou suppriment la valeur par défaut d'une colonne (la suppression étant équivalente à la définition de la valeur par défaut sur NULL). La nouvelle valeur par défaut ne s'appliquera qu'aux UPDATE commandes INSERT ou suivantes ; elle n'entraîne pas de modification des lignes déjà présentes dans le tableau.

DROP NOT NULL

Ce formulaire modifie une colonne pour autoriser les valeurs nulles.

DROP EXPRESSION [ IF EXISTS ]

Ce formulaire transforme une colonne générée stockée en une colonne de base normale. Les données existantes dans les colonnes sont conservées, mais les modifications futures n'appliqueront plus l'expression de génération. Si elle DROP EXPRESSION IF EXISTS est spécifiée et que la colonne n'est pas une colonne générée, aucune erreur n'est renvoyée. Dans ce cas, un avis est émis à la place.

ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY
SET GENERATED { ALWAYS | BY DEFAULT }
DROP IDENTITY [ IF EXISTS ]

Ces formulaires permettent de déterminer si une colonne est une colonne d'identité ou modifient l'attribut de génération d'une colonne d'identité existante. Consultez CREATE TABLE pour plus de détails. Par exempleSET DEFAULT, ces formulaires n'affectent que le comportement des UPDATE commandes INSERT et suivantes ; ils ne modifient pas les lignes déjà présentes dans le tableau.

sequence_optionIl s'agit d'une option prise en charge par ALTER SEQUENCE des outils tels queINCREMENT BY. Ces formulaires modifient la séquence qui sous-tend une colonne d'identité existante.

Note

Amazon Aurora DSQL nécessite une CACHE valeur explicite lors de son utilisationADD GENERATED AS IDENTITY. De plus, les colonnes d'identité ne sont prises en charge que sur bigint les colonnes.

Lorsque vous utilisez des colonnes d'identité, la valeur du cache doit être soigneusement prise en compte. Pour plus d'informations, consultez la légende Important de la CREATE SEQUENCE page.

Pour obtenir des conseils sur la meilleure façon d'utiliser les colonnes d'identité en fonction des modèles de charge de travail, consultezUtilisation de séquences et de colonnes d'identité.

SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT }

Ce formulaire définit le mode de stockage d'une colonne. Pour plus de détails sur les modes de stockage disponibles, consultez Mode de stockage la CREATE TABLE page.

ADD table_constraint NOT VALID

Ce formulaire ajoute une nouvelle CHECK contrainte à un tableau. Dans Aurora DSQL, CHECK les contraintes ajoutées via ALTER TABLE ADD CONSTRAINT doivent utiliser NOT VALID cette option. Aurora DSQL crée la contrainte mais ne la valide pas immédiatement par rapport aux données existantes. Cela permet d'ajouter la contrainte sans avoir à scanner la totalité du tableau. La contrainte s'applique immédiatement à toutes les nouvelles lignes et mises à jour.

Après avoir ajouté une contrainte avecNOT VALID, utilisez-la ALTER TABLE ASYNC ... VALIDATE CONSTRAINT pour valider que les données existantes satisfont également à la contrainte. La validation s'exécute sous la forme d'une tâche DDL asynchrone. Vous pouvez suivre ses progrès à l'aide desys.jobs.

ADD table_constraint_using_index

Ce formulaire ajoute une nouvelle UNIQUE contrainte à une table en fonction d'un index unique existant. Toutes les colonnes de l'index seront incluses dans la contrainte.

L'index doit être dans un VALID état ; l'ajout d'une contrainte unique à l'aide d'un index alors que l'index est en cours de création n'est pas pris en charge.

Si un nom de contrainte est fourni, l'index sera renommé pour correspondre au nom de la contrainte. Sinon, la contrainte sera nommée de la même manière que l'index.

Une fois cette commande exécutée, l'index est « détenu » par la contrainte, de la même manière que s'il avait été créé par une CREATE UNIQUE INDEX ASYNC commande normale. En particulier, la suppression de la contrainte entraînera également la disparition de l'index.

VALIDATE CONSTRAINT

Ce formulaire valide une contrainte créée précédemment avec l'NOT VALIDoption. Cette commande est une opération DDL asynchrone qui ne bloque pas les autres transactions. Lorsque vous exécutez ALTER TABLE ASYNC ... VALIDATE CONSTRAINT, Aurora DSQL renvoie immédiatement un job_id.

Vous pouvez surveiller l’état de cette tâche asynchrone à l’aide de la vue système sys.jobs. Vous pouvez également l'utiliser sys.wait_for_job('job_id') pour bloquer la session en cours jusqu'à ce que la validation soit terminée ou échoue.

La tâche de validation analyse l'intégralité de la table pour vérifier que toutes les lignes existantes satisfont à la contrainte. Une fois la validation terminée, Aurora DSQL marque la contrainte comme étant valide et le planificateur de requêtes l'applique à toutes les requêtes. Si la validation échoue parce que les lignes existantes ne respectent pas la contrainte, la tâche échoue et la contrainte reste NOT VALID inchangée.

Cette commande valide uniquement les contraintes que vous avez créées avec l'NOT VALIDoption. Toute tentative de validation d'une contrainte déjà valide entraîne une erreur.

DROP CONSTRAINT [ IF EXISTS ]

Ce formulaire supprime la contrainte spécifiée sur une table, ainsi que tout indice sous-jacent à la contrainte. Si elle IF EXISTS est spécifiée et que la contrainte n'existe pas, aucune erreur n'est renvoyée. Dans ce cas, un avis est émis à la place.

OWNER TO

Ce formulaire remplace le propriétaire de la table par l'utilisateur spécifié.

RENAME

Les RENAME formulaires modifient le nom d'une table, le nom d'une colonne individuelle d'une table ou le nom d'une contrainte de la table. Lorsque vous renommez une contrainte qui possède un index sous-jacent, l'index est également renommé. Il n'y a aucun effet sur les données stockées.

SET SCHEMA

Ce formulaire déplace la table dans un autre schéma. Les index, les contraintes et les séquences associés appartenant aux colonnes du tableau sont également déplacés.

Parameters

IF EXISTS

Ne lancez pas d'erreur si la table n'existe pas. Un avis est émis dans ce cas.

name

Le nom (éventuellement qualifié de schéma) d'une table existante à modifier. Si cette ONLY valeur est spécifiée avant le nom de la table, seule cette table est modifiée. Si ONLY ce n'est pas spécifié, la table et toutes ses tables descendantes (le cas échéant) sont modifiées. Facultativement, elle * peut être spécifiée après le nom de la table pour indiquer explicitement que les tables descendantes sont incluses.

column_name

Nom d'une colonne nouvelle ou existante.

new_column_name

Nouveau nom d’une colonne existante.

new_name

Nouveau nom pour la table.

data_type

Type de données de la nouvelle colonne.

table_constraint

Définition d'une CHECK contrainte. Dans Aurora DSQL, CHECK les contraintes doivent être ajoutées à l'aide de l'NOT VALIDoption usingALTER TABLE ADD CONSTRAINT. Consultez CREATE TABLE la syntaxe complète des CHECK contraintes.

constraint_name

Nom d'une contrainte nouvelle ou existante.

CASCADE

Supprimez automatiquement les objets qui dépendent de la colonne ou de la contrainte supprimée (par exemple, les vues faisant référence à la colonne) et, à leur tour, tous les objets qui dépendent de ces objets.

RESTRICT

Refusez de supprimer la colonne ou la contrainte s'il existe des objets dépendants. Il s’agit du comportement de par défaut.

new_owner

Le nom d'utilisateur du nouveau propriétaire de la table.

new_schema

Nom du schéma vers lequel la table sera déplacée.

Remarques

Le DROP COLUMN formulaire ne supprime pas physiquement la colonne, mais la rend simplement invisible pour les opérations SQL. Les opérations d'insertion et de mise à jour ultérieures dans la table stockeront une valeur nulle pour la colonne. Ainsi, supprimer une colonne est rapide, mais cela ne réduira pas immédiatement la taille du disque de votre table, car l'espace occupé par la colonne supprimée n'est pas récupéré. L'espace sera récupéré au fil du temps à mesure que les lignes existantes seront mises à jour.

Si une colonne supprimée est référencée en tant que INCLUDE colonne dans la clé primaire, la définition de la clé primaire sera mise à jour pour supprimer la colonne supprimée.

Dans Aurora DSQL, une table peut comporter au maximum 255 colonnes actives à la fois et au maximum 1 600 colonnes pendant la durée de vie de la table. La suppression d'une colonne ne permet pas de récupérer son numéro d'attribut. Elle est supprimée de l'ensemble des colonnes actives, mais la colonne supprimée reste prise en compte dans la limite de durée de vie de 1 600 colonnes. Pour de plus amples informations, veuillez consulter Limites de base de données dans Aurora DSQL.