UPDATE - Amazon Redshift

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.

UPDATE

Met à jour les valeurs d’une ou de plusieurs Colonnes de la table lorsqu’une condition est satisfaite.

Note

La taille maximale d’une instruction SQL est de 16 Mo.

Syntaxe

[ WITH [RECURSIVE] common_table_expression [, common_table_expression , ...] ] UPDATE table_name [ [ AS ] alias ] SET column = { expression | DEFAULT } [,...] [ FROM fromlist ] [ WHERE condition ]

Paramètres

Clause WITH

Clause facultative qui en spécifie une ou plusieurs common-table-expressions. Consultez Clause WITH.

table_name

Table temporaire ou permanente. Seul le propriétaire de la table ou un utilisateur avec le privilège UPDATE sur la table peut-être mettre à jour les lignes. Si vous utilisez la clause FROM ou sélectionnez à partir de tables dans une expression ou une condition, vous devez avoir le privilège SELECT sur les tables. Vous ne pouvez pas ici donner un alias à la table ; cependant, vous pouvez spécifier un alias dans la clause FROM.

Note

Les tables externes d’Amazon Redshift Spectrum sont en lecture seule. Vous ne pouvez pas mettre à jour (UPDATE) une table externe.

alias

Nom alternatif temporaire d’une table cible. Les alias sont facultatifs. Le mot-clé AS est toujours facultatif.

SET colonne =

Une ou plusieurs colonnes que vous voulez modifier. Les colonnes qui ne sont pas répertoriées conservent leurs valeurs actuelles. N’incluez pas le nom de la table dans la spécification d’une colonne cible. Par exemple, UPDATE tab SET tab.col = 1 n’est pas valide.

expression

Expression qui définit la nouvelle valeur de la colonne spécifiée.

DEFAULT

Met à jour la colonne avec la valeur par défaut qui a été attribuée à la colonne dans l’instruction CREATE TABLE.

FROM liste_tables

Vous pouvez mettre à jour une table en faisant référence aux informations d’autres tables. Répertoriez ces autres tables dans la clause FROM ou utilisez une sous-requête dans le cadre de la condition WHERE. Les tables répertoriées dans la clause FROM peuvent avoir des alias. Si vous avez besoin d’inclure la table cible de l’instruction UPDATE dans la liste, utilisez un alias.

WHERE condition

Clause facultative qui limite les mises à jour aux lignes qui correspondent à une condition. Lorsque la condition renvoie true, les colonnes SET spécifiées sont mises à jour. La condition peut être un simple prédicat sur une colonne ou une condition en fonction du résultat d’une sous-requête.

Vous pouvez nommer n’importe quelle table de la sous-requête, y compris la table cible de l’opération UPDATE.

Notes d’utilisation

Après la mise à jour d’un grand nombre de lignes dans une table :

  • Exécuter une opération VACUUM sur la table pour récupérer de l’espace de stockage et retrier les lignes.

  • Analysez la table pour mettre à jour les statistiques pour le planificateur de requête.

Les jointures externes complètes, gauche et droite ne sont pas prises en charge dans la clause FROM d’une instruction UPDATE ; elles renvoient l’erreur suivante :

ERROR: Target table must be part of an equijoin predicate

Si vous avez besoin de spécifier une jointure externe, utilisez une sous-requête dans la clause WHERE de l’instruction UPDATE.

Si votre instruction UPDATE nécessite une jointure réflexive avec la table cible, vous devez spécifier la condition de jointure, ainsi que les critères de la clause WHERE qui qualifient les lignes pour l’opération de mise à jour. En général, lorsque la table cible est associée à elle-même ou à une autre table, une bonne pratique consiste à utiliser une sous-requête qui sépare clairement les conditions de jointure des critères qui qualifient les lignes pour les mises à jour.

Les requêtes UPDATE avec plusieurs correspondances par ligne renvoient une erreur lorsque le paramètre de configuration error_on_nondeterministic_update est défini sur true. Pour plus d'informations, consultez error_on_nondeterministic_update.

Vous pouvez mettre à jour une colonne GENERATED BY DEFAULT AS IDENTITY. Les colonnes définies comme GENERATED BY DEFAULT AS IDENTITY peuvent être mises à jour avec des valeurs que vous fournissez. Pour plus d'informations, consultez GENERATED BY DEFAULT AS IDENTITY.