El prefijo
ALTER TABLE hace que esta sintaxis sea distinta de la de la mayoría de los demás sistemas que admiten SQL. Su objetivo es indicar que, a diferencia de consultas similares en bases de datos OLTP, esta es una operación costosa que no está pensada para usarse con frecuencia.filter_expr debe ser de tipo UInt8. Esta consulta actualiza los valores de las columnas especificadas con los valores de las expresiones correspondientes en las filas para las que filter_expr toma un valor distinto de cero. Los valores se convierten al tipo de la columna mediante el operador CAST. No se admite actualizar columnas que se usan en el cálculo de la clave primaria o de la clave de partición.
Una consulta puede contener varios comandos separados por comas.
El carácter síncrono del procesamiento de la consulta se define mediante la configuración mutations_sync. De forma predeterminada, es asíncrona.
Véase también
- Mutaciones
- Sincronía de las consultas ALTER
- Configuración mutations_sync
UPDATEligera - Actualización ligera alternativa mediante partes de parcheAPPLY PATCHES- Aplicar manualmente parches de actualizaciones ligeras
Columnas materializadas
MATERIALIZED cuya expresión hace referencia a una
columna actualizada se recalcula mediante la mutación, por lo que su valor almacenado se mantiene coherente con los nuevos datos.
Columnas calculadas a partir de columnas EPHEMERAL
EPHEMERAL existe únicamente durante un
INSERT y nunca se almacena, por lo que una columna MATERIALIZED calculada a partir de ella no puede volver a calcularse mediante una
mutación. Esta columna conserva el valor calculado en el momento del INSERT, que deja de coincidir con su
expresión:
m es 8, el valor calculado durante el INSERT, y no 2 + 7: el valor de e no está disponible
fuera del INSERT que lo proporcionó. La mutación escribe una advertencia en el registro del servidor cuando omite una
columna por este motivo. Para actualizar dicha columna, vuelva a insertar las filas afectadas mediante INSERT.