Skip to main content
Manipule les données correspondant à l’expression de filtrage spécifiée. Cette opération est implémentée sous forme de mutation.
Le préfixe ALTER TABLE distingue cette syntaxe de celle de la plupart des autres systèmes prenant en charge SQL. Il indique que, contrairement à des requêtes similaires dans les bases de données OLTP, il s’agit d’une opération lourde qui n’est pas conçue pour être utilisée fréquemment.
filter_expr doit être de type UInt8. Cette requête met à jour les valeurs des colonnes spécifiées avec celles des expressions correspondantes dans les lignes pour lesquelles filter_expr prend une valeur non nulle. Les valeurs sont converties vers le type de la colonne à l’aide de l’opérateur CAST. La mise à jour de colonnes utilisées dans le calcul de la clé primaire ou de la clé de partitionnement n’est pas prise en charge. Une requête peut contenir plusieurs commandes séparées par des virgules. La clause IN PARTITION limite la mutation aux partitions indiquées. Sans cette clause, pour les tables de la famille ReplicatedMergeTree, lorsque le paramètre optimize_mutations_with_partition_pruning est activé (valeur par défaut), ClickHouse détecte automatiquement les conditions sur la clé de partitionnement dans filter_expr et ne modifie que les partitions concernées. Pour les tables MergeTree non répliquées, utilisez une clause IN PARTITION explicite pour limiter la mutation à des partitions spécifiques. Le mode de synchronisation du traitement de la requête est défini par le paramètre mutations_sync. Par défaut, il est asynchrone. Voir aussi

Colonnes matérialisées

Une colonne MATERIALIZED dont l’expression lit une colonne mise à jour est recalculée lors de la mutation, afin que sa valeur stockée reste cohérente avec les nouvelles données.

Colonnes calculées à partir de colonnes EPHEMERAL

Une colonne EPHEMERAL n’existe que pendant la durée d’un INSERT et n’est jamais stockée. Une colonne MATERIALIZED calculée à partir de celle-ci ne peut donc pas être recalculée par une mutation. Elle conserve la valeur calculée lors de l’INSERT, qui ne correspond alors plus à son expression :
m vaut 8, la valeur calculée lors de l’INSERT, et non 2 + 7 : la valeur de e n’est pas disponible en dehors de l’INSERT qui l’a fournie. La mutation consigne un avertissement dans le journal du serveur lorsqu’elle ignore une colonne pour cette raison. Pour mettre à jour une telle colonne, réexécutez l’INSERT pour les lignes concernées.

Contenu associé

Dernière modification le 26 septembre 2026