【发布时间】:2015-06-23 05:30:56
【问题描述】:
我已经创建了这张表:
Create table Vars(A number, B number, C number);
然后,我插入了一个新行,其中只有第一列(即A)有值:
Insert Into Vars(A) values (2);
现在,我想创建一个更新语句来修改列 B 和 C 的值,如下所示:
B = A*A
C = B+10
问题是当我执行下面的更新语句时,B的值更新正确,但是C的值是在B的旧值基础上更新的,它是null,而不是更新了一个:
Update Vars set B=A*A, C=B+10;
谁能帮助我提供一种方法,允许使用单个更新语句根据B 的更新值计算C。
提前谢谢你。
【问题讨论】:
-
可以写"update vars set B = A * A, C = (A * A) + 10;
-
其实列的真实计算太复杂了(我这里发的只是例子)。此外,我的表有 10 列,其中每一列都根据一组先前更新的列进行更新。
-
@TeeKea 你在使用 plsql 吗?这样最好把它写成 plsql 块
-
要在 PL/SQL 中实现这一点,我需要多次执行更新语句(等于行数)。我的数据太大了,我需要更少的操作。
-
您是否考虑过使用虚拟列而不是尝试维护物理列?
标签: sql oracle sql-update