O prefixo
ALTER TABLE faz com que essa sintaxe seja diferente da maioria dos outros sistemas compatíveis com SQL. Ele serve para indicar que, ao contrário de consultas semelhantes em bancos de dados OLTP, esta é uma operação pesada, não projetada para uso frequente.filter_expr deve ser do tipo UInt8. Esta consulta atualiza os valores das colunas especificadas para os valores das expressões correspondentes nas linhas em que a filter_expr assume um valor diferente de zero. Os valores são convertidos para o tipo da coluna usando o operador CAST. Não há suporte para atualizar colunas usadas no cálculo da chave primária ou da chave de partição.
Uma única consulta pode conter vários comandos separados por vírgulas.
A sincronia do processamento da consulta é definida pela configuração mutations_sync. Por padrão, ela é assíncrona.
Veja também
- Mutações
- Sincronia das consultas ALTER
- Configuração mutations_sync
UPDATEleve - Alternativa de atualização leve usando partes de patchAPPLY PATCHES- Aplicar manualmente patches de atualizações leves
Colunas materializadas
MATERIALIZED cuja expressão lê uma
coluna atualizada é recalculada pela mutação, garantindo que seu valor armazenado permaneça consistente com os novos dados.
Colunas calculadas a partir de colunas EPHEMERAL
EPHEMERAL existe apenas durante um
INSERT e nunca é armazenada. Portanto, uma coluna MATERIALIZED calculada a partir dela não pode ser recalculada por uma
mutação. Essa coluna mantém o valor calculado no momento do INSERT, que posteriormente deixa de corresponder à sua
expressão:
m é 8, o valor calculado durante o INSERT, e não 2 + 7: o valor de e não está disponível
fora do INSERT que o forneceu. A mutação registra um aviso no log do servidor ao ignorar uma
coluna por esse motivo. Para atualizar essa coluna, execute novamente o INSERT nas linhas afetadas.