查看更新引发ORA-01733

时间:2014-04-08 10:12:26

标签: sql oracle oracle-sqldeveloper database

我创建了一个视图,然后我想更新成本并显示错误。但它反过来说不允许使用虚拟列。

查看:

 CREATE OR REPLACE VIEW CONCERT_EVENTS1 AS
 SELECT CONCERT.CONCERT_ID, EVENT.EVENT_ID, CONCERT.NAME, EVENT.DATE1 , CONCERT.DURATION,
 CONCERT.TYPE, TO_CHAR(CONCERT.COST, 'L9,999.99') AS FORMATED_COST
 FROM EVENT
 INNER JOIN CONCERT
 ON CONCERT.CONCERT_ID = EVENT.CONCERT_ID;

以下是错误: 从命令中的第1行开始出错:

UPDATE CONCERT_EVENTS1
SET formated_cost = '300.00'
WHERE formated_cost = '200.00'

Error at Command Line:2 Column:5
Error report:
SQL Error: ORA-01733: virtual column not allowed here
01733. 00000 -  "virtual column not allowed here"
*Cause:    
*Action:

提前致谢

2 个答案:

答案 0 :(得分:0)

  

FORMATED_COST可能是一个计算字段,或者无论如何都是   数据库无法推断对表进行的更改   根据您所要求的变化来构建视图。

答案 1 :(得分:0)

在CONCERT.COST视图中包含一个没有格式的额外列。并仅更新该新列。 Vignesh Kumar给出了为什么需要这样做的解释。