PostgreSQL中如何在不修改原表的前提下修改视图内的字段值
实现方案
完全可以实现,PostgreSQL的视图本身就是不修改原表的虚拟表,搭配条件表达式即可满足你的转换需求。
具体SQL代码
假设你的原表名为source_table,创建视图的语句如下:
CREATE OR REPLACE VIEW business_view AS SELECT Col1, CASE WHEN Col3 = 'B' AND Col2 = -1 THEN 1 ELSE Col2 END AS Col2, Col3 FROM source_table;
逻辑说明
- 视图仅做查询映射,不会对原表
source_table的任何数据产生修改,完全符合你不改动原表的要求,后续业务或分析场景直接查询business_view即可,使用方式和普通物理表完全一致。 CASE条件表达式完全匹配你需要的转换规则:仅当Col3值为B且Col2值为-1时返回1,其余所有场景都返回原表Col2的原值,和你给出的示例转换效果完全一致。
如果后续需要调整视图的转换规则,直接修改上面的CASE逻辑,重新执行CREATE OR REPLACE VIEW语句即可,全程不会触碰原表数据。
内容的提问来源于stack exchange,提问作者Marc
相关产品推荐
相关产品推荐

