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 EXISTSest 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
CASCADEsi 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 elleIF EXISTSest 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
UPDATEcommandesINSERTou 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 EXISTSest 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 IDENTITYSET 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 exemple
SET DEFAULT, ces formulaires n'affectent que le comportement desUPDATEcommandesINSERTet 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
CACHEvaleur explicite lors de son utilisationADD GENERATED AS IDENTITY. De plus, les colonnes d'identité ne sont prises en charge que surbigintles 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.
ADDtable_constraintNOT VALID-
Ce formulaire ajoute une nouvelle
CHECKcontrainte à un tableau. Dans Aurora DSQL,CHECKles contraintes ajoutées viaALTER TABLE ADD CONSTRAINTdoivent utiliserNOT VALIDcette 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 avec
NOT VALID, utilisez-laALTER TABLE ASYNC ... VALIDATE CONSTRAINTpour 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. ADDtable_constraint_using_index-
Ce formulaire ajoute une nouvelle
UNIQUEcontrainte à 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 ASYNCcommande 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écutezALTER TABLE ASYNC ... VALIDATE CONSTRAINT, Aurora DSQL renvoie immédiatement unjob_id.Vous pouvez surveiller l’état de cette tâche asynchrone à l’aide de la vue système
sys.jobs. Vous pouvez également l'utilisersys.wait_for_job(pour bloquer la session en cours jusqu'à ce que la validation soit terminée ou échoue.'job_id')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 VALIDinchangé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 EXISTSest 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
RENAMEformulaires 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
ONLYvaleur est spécifiée avant le nom de la table, seule cette table est modifiée. SiONLYce 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
CHECKcontrainte. Dans Aurora DSQL,CHECKles contraintes doivent être ajoutées à l'aide de l'NOT VALIDoption usingALTER TABLE ADD CONSTRAINT. Consultez CREATE TABLE la syntaxe complète desCHECKcontraintes. 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.