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.
Mise à jour, suppression ou insertion conditionnelle de lignes dans une table Iceberg. Une seule instruction peut combiner des actions de mise à jour, de suppression et d'insertion. Pour la syntaxe, consultez MERGE INTO.
Note
MERGE INTO
est transactionnel et n'est pris en charge que pour les tables Apache Iceberg dans la version 3 du moteur Athena.
L'exemple suivant supprime tous les clients de la table t
qui se trouvent dans la table source s
.
MERGE INTO accounts t USING monthly_accounts_update s
ON t.customer = s.customer
WHEN MATCHED
THEN DELETE
L'exemple suivant met à jour la table cible t
avec les informations des clients provenant de la table source s
. Pour les lignes de clients dans la table t
qui ont des lignes de clients correspondantes dans la table s
, l'exemple incrémente les achats dans la table t. Si la table t
ne correspond pas à une ligne de client dans la table s
, l'exemple insère la ligne de client de la table s
dans la table t
.
MERGE INTO accounts t USING monthly_accounts_update s
ON (t.customer = s.customer)
WHEN MATCHED
THEN UPDATE SET purchases = s.purchases + t.purchases
WHEN NOT MATCHED
THEN INSERT (customer, purchases, address)
VALUES(s.customer, s.purchases, s.address)
L'exemple suivant met à jour de manière conditionnelle la table cible t
avec les informations de la table source s
. L'exemple supprime toute ligne cible correspondante dont l'adresse source est Centreville. Pour toutes les autres lignes correspondantes, l'exemple ajoute les achats source et définit l'adresse cible comme adresse source. S'il n'y a aucune correspondance dans la table cible, l'exemple insère la ligne de la table source.
MERGE INTO accounts t USING monthly_accounts_update s
ON (t.customer = s.customer)
WHEN MATCHED AND s.address = 'Centreville'
THEN DELETE
WHEN MATCHED
THEN UPDATE
SET purchases = s.purchases + t.purchases, address = s.address
WHEN NOT MATCHED
THEN INSERT (customer, purchases, address)
VALUES(s.customer, s.purchases, s.address)