Skip to main content
对与指定过滤表达式匹配的数据进行操作。其作为一种变更实现。
ALTER TABLE 前缀使这种语法有别于大多数其他支持 SQL 的系统。这样设计是为了表明,与 OLTP 数据库中的类似查询不同,这是一项开销较大的操作,并非为频繁使用而设计。
filter_expr 必须为 UInt8 类型。对于 filter_expr 取非零值的行,此查询会将指定列的值更新为相应表达式的值。这些值会使用 CAST 运算符转换为列类型。不支持更新用于计算主键或分区键的列。 一条查询可以包含多个以逗号分隔的命令。 查询处理的同步方式由 mutations_sync 设置决定。默认情况下,它是异步的。 另请参阅

materialized 列

表达式引用已更新列的 MATERIALIZED 列会在变更期间重新计算,因此其存储值将与新数据保持一致。

基于 EPHEMERAL 列计算的列

EPHEMERAL 列仅在执行 INSERT 期间存在,且不会被存储。因此,基于该列计算的 MATERIALIZED 列无法通过变更重新计算。这类列会保留 INSERT 时计算出的值,之后该值将不再与其表达式匹配:
m8,即在 INSERT 时计算得出的值,而非 2 + 7e 的值在提供该值的 INSERT 之外不可用。因此,变更跳过某列时会在服务器日志中写入一条警告。要更新此类列,请重新 INSERT 受影响的行。
最后修改于 2026年8月18日