把全部数据更新掉 update UPDATETEST set TESTCOLUMN1=fun(参数1,参数2...),TESTCOLUMN2=fun(参数1,参数2...); 部分数据要加条件 update UPDATETEST set TESTCOLUMN1=fun(参数1,参数2...),TESTCOLUMN2=fun(参数1,参数2...) where 条件1 and ...
UPDATE TEST SET (TESTCOLUMN1,TESTCOLUMN2)=(FUN(...),FUN(....))
update UPDATETEST set TESTCOLUMN1=fun(参数1,参数2...),TESTCOLUMN2=fun(参数1,参数2...);
部分数据要加条件
update UPDATETEST set TESTCOLUMN1=fun(参数1,参数2...),TESTCOLUMN2=fun(参数1,参数2...) where 条件1 and ...
UPDATE TEST
SET (TESTCOLUMN1,TESTCOLUMN2)=(FUN(...),FUN(....))
我的意思是在某种条件下,两个字段UPDATE的结果值一样,即FUN()里面的参数都一样。
是不是有别的办法,不用去做两次一模一样的FUN(),(方法相同,参数相同),而采取别的办法。
或者是ORACLE下本来就有类似缓存机制,在SET COLUMN1=FUN()完后,去UPDATE COLUMN2时,发现FUN()完全一样,而且参数也相同,就直接调用缓存就是上一步的结果去做呢?
建一个触发器,在触发器里写上
:new.TESTCOLUMN2 := :new.TESTCOLUMN1;
还有一个快馊了的主意一条:
把一条update语句按记录拆开,在游标的循环中先取来func的值,再在update中两次引用这个值给这两字段更新。