PostgreSQL向已有表新增列:已有行设初始值、新行用不同默认值
PostgreSQL新增列指定已有行填充值和后续默认值方案
完全可以实现你要的效果,你需要的未知语法就是 USING 子句,完整执行语句如下:
ALTER TABLE my_table ADD COLUMN description varchar(100) DEFAULT 'B2' USING 'A1';
语法说明
DEFAULT 'B2':为新增字段设置全局默认值,后续插入数据如果未显式指定description字段的值,会自动填充为B2USING 'A1':仅在新增字段的执行阶段生效,会把表中所有已存在的行的description字段一次性填充为A1,不会影响后续新增数据
注意:PostgreSQL 中字符串字面量需要用单引号包裹,双引号仅用于识别表名、字段名等标识符,你示例中写的
DEFAULT "B2"属于语法错误,需要调整为单引号。
验证效果
执行上述ALTER语句后,再运行修正后的插入语句:
INSERT INTO my_table(name, work) VALUES ('karen', 'developer');
最终表数据和你预期完全一致:
| name | work | description |
|---|---|---|
| bob | fireman | A1 |
| carl | teacher | A1 |
| alice | policeman | A1 |
| karen | developer | B2 |
内容的提问来源于stack exchange,提问作者Tms91
相关产品推荐
相关产品推荐

