更新表错误,因为此视图上的数据操作操作不合法

时间:2016-02-21 08:28:12

标签: sql oracle sql-update

我编写了简单的更新查询,如下所示

update table_name set name = 'new name

给了我错误

SQL Error: ORA-01732: data manipulation operation not legal on this view 01732. 00000 -  "data manipulation operation not legal on this view"
之后我检查

select * FROM USER_OBJECTS WHERE OBJECT_NAME='table_name'

列出与'table_name'

相同的TABLE和MATERIALIZED VIEW

我知道物化视图无法更新,但表格应该更新

请让我知道如何使用简单的上述更新查询更新表

1 个答案:

答案 0 :(得分:0)

您无法更新实体化视图或physical table it uses for storage。您只能更新构建视图的表。大概你知道那些;如果没有,您可以从数据字典或dbms_metadata.get_ddl获取视图定义。

无论如何,更新视图或它的支持表都没有意义。即使您被允许,在下次刷新视图时,您所做的任何更改都将丢失。

如果您不希望再次刷新实体化视图,那么您可以drop that使用preserve table选项,这将只留下物理表 - 然后您更新它。但是如果你改变主意,你必须重新创建视图并指定现有的表格。