You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MariaDB 10.1.30执行ALTER TABLE ADD COLUMN为何显示0 rows affected?

为什么MariaDB执行ALTER TABLE ADD COLUMN后显示0 rows affected?

嘿,这个疑问其实挺普遍的,我来给你掰扯明白~

先看你执行命令后的输出:

Query OK, 0 rows affected (0.09 sec)
Records: 0 Duplicates: 0 Warnings: 0

你已经理解后面几行的含义,那重点说为啥会显示0 rows affected。

在MariaDB(包括MySQL)里,ALTER TABLE ADD COLUMN操作的rows affected统计的是被修改的实际数据行数量,而非表的总行数。当你添加新列时:

  • 如果新列允许NULL(这是默认行为),数据库只需要修改表的元数据(也就是表结构定义),不需要逐个更新每一行的数据——因为新列默认值就是NULL,数据库不需要实际写入任何内容到数据行里。
  • 就算你给新列设置了非NULL的默认值,像MariaDB 10.1.30这类版本默认用INPLACE算法执行ALTER操作,数据库也不会真的把默认值写入每一行,而是在元数据里记录这个默认值,查询时再动态返回,所以同样不会有数据行被修改,自然显示0 rows affected。

只有当你强制使用ALGORITHM=COPY算法(比如执行ALTER TABLE 表名 ADD COLUMN 列名 类型 DEFAULT 'xxx' ALGORITHM=COPY;),数据库才会复制整个表并给每一行填充默认值,这时候rows affected才会等于表的总行数。

总结一下:这个0 rows affected完全是正常现象,说明你的表结构修改成功,且没有修改任何实际的数据行,操作效率很高哦~

内容的提问来源于stack exchange,提问作者lkp111138

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:52:27