DB2为已有记录的表新增非空默认空字符串列相关问题咨询
DB2 新增非空带默认值字段问题解答
你使用的DDL语句如下:
ALTER TABLE mytable ADD COLUMN newColumn VARCHAR(10) NOT NULL DEFAULT '';
以下是对应问题的解答:
1. 现有记录的新增字段是否会自动填充默认空字符串?
是。指定NOT NULL约束同时配置默认值的场景下,DB2执行加字段操作时会自动为所有存量记录的该字段填入你设置的默认空字符串,不会触发非空约束报错。
2. 该默认值是否仅对后续新增的记录生效?
不是。该默认值的生效范围包含两类场景:
- 加字段操作执行时,存量记录的自动填充
- 后续插入新记录时,若SQL中没有主动给该字段赋值,默认填入空字符串
如果后续不需要该默认值,可单独执行ALTER语句修改字段属性移除默认值配置。
3. 该操作方式是否安全?
常规场景下该操作是安全的,仅需注意两个风险点:
- 若当前表存在未提交的长事务持有表级锁,加字段操作会进入锁等待,极端情况可能引发业务侧锁超时,建议执行前先确认表无未提交的锁占用
- 若表为记录数超百万级的超大表,加字段操作会扫描全表写入默认值,占用大量IO、CPU资源,建议选择业务低峰期执行
操作前建议先行备份表数据,进一步规避操作失误带来的数据风险。
内容的提问来源于stack exchange,提问作者user29662
相关产品推荐
相关产品推荐

