基本问题,开始用户。
我在表(房间)中有一个列(价格)。列(价格)的约束必须在20到100之间。
我需要更新列(价格)以反映价格上涨5%。但是,此列中的某些字段在更新后的价格将> 100,从而导致其下降 在约束之外。要解决这个问题,那些超过100的价格需要设置为100。这就是我所拥有的:
UPDATE ROOM
SET PRICE=
CASE
WHEN PRICE*1.05<100
THEN PRICE*1.05
ELSE PRICE=100
END CASE
WHERE HOTELNO='1004' OR
HOTELNO='1001' OR
HOTELNO='1002'
;
我在搜索中可以提出最佳效果。我收到以下错误:
ORA-00905:缺少关键字
这是使用Oracle 10g。
提前感谢您的帮助。
答案 0 :(得分:1)
尝试以下
update room
set price=price*1.05
where hotelno in ('1004','1001')
and (price*1.05)<100