PostgreSQL将同表字段计算值写入另一列使用INSERT报错求解
问题根因
你所有报错的核心原因是选错了SQL操作类型:INSERT 用于向表中插入全新的行,而你需要的是修改已有行的column3字段值,应该使用UPDATE语句。
其余具体报错原因:
- 23502非空约束报错:
column1是主键非空字段,INSERT新增行时必须传入主键值,你仅传入column3的赋值自然触发约束报错 - 42601语法报错:
INSERT ... VALUES语法不支持直接传入返回多行结果的SELECT子查询,写法本身不符合SQL规范
正确实现代码
直接执行全表UPDATE操作即可:
UPDATE mytable SET column3 = column2 / 1.25;
如果你使用的数据库(如PostgreSQL)对数值到money类型的隐式转换有兼容要求,可以加显式类型转换避免报错:
UPDATE mytable SET column3 = (column2 / 1.25)::money;
执行后所有行的column3就会被更新为对应行column2除以1.25的计算结果。
内容的提问来源于stack exchange,提问作者Jamalan
相关产品推荐
相关产品推荐

