1 前言
之前曾经编写过一篇关于多表可更新视图的文章,而事实上,Oracle并不是要求所有的可更新视图都需要带触发器。
只要要求更新的字段属于同一张数据表(简称“更新表”,而且其它表与“更新表”是正常的关联关系,则此视图就可以更新。
但是一句复杂的SELECT编制的视图,出现错误时,可能的问题点是千奇百怪的,排除错误所需要耗费的时间通常较多。
复杂的问题,仍是由简单的技术来实现
2 技术要点
ORACLE系统表中,有一张视图,记录所有可以更新和不可以更新的视图(和数据表):User_Updateable_Columns
该视图字段如下:
NameType Nullable Default Comments
----------- ------------ -------- ------- ---------------
OWNER VARCHAR2(30)Table owner
TABLE_NAMEVARCHAR2(30)Table name
COLUMN_NAME VARCHAR2(30)Column name
UPDATABLE VARCHAR2(3)YIs the column updatable?
INSERTABLEVARCHAR2(3)YIs the column insertable?
DELETABLE VARCHAR2(3)YIs the column deletable?
使用Select * From user_Updateable_Columns Where Table_name=Upper('YourViewname')
即可查询视图中哪些字段是答应更新的