问题描述
在我工作的客户中,有一个设计标准,即每个DB视图都应以所谓的 “评论” 块开始。这是为了确保注释存储在DB中的数据字典中。
创建或替换视图xxxx为
注释为 (从对偶中选择/* 实现 */ '')
/* 创建: xxxx
| | 更改日志: xxxx
*/
...
到目前为止,很好。
但是,遵循smart-DB范例,我们为在带有或不带有DML的Apex屏幕中使用的任何表访问创建一个视图 (可选地使用代替触发器)。
但是在这些视图上使用DML会引发ORA-01031-权限不足...这是造成的,因为视图引用了双重对象。为了澄清,请参阅我在LiveSQL上也提供的这个示例:
请注意,我希望在这种情况下使用 “仅阅读” 子句会有所帮助,但没有成功 (可能这只是在使用数据库链接时有效)。
除了在注释块中使用dual之外,在SQL中重新生成应用程序上下文时,还有DUAL的用例。
当然,通过创建我们自己的 “dummy” (公共) 表,这是一种解决方法,但是,我认为这种对偶的特定约束有些出乎意料,并不方便。
还是我错过了什么?你有什么看法?
创建或替换视图xxxx为
注释为 (从对偶中选择/* 实现 */ '')
/* 创建: xxxx
| | 更改日志: xxxx
*/
...
到目前为止,很好。
但是,遵循smart-DB范例,我们为在带有或不带有DML的Apex屏幕中使用的任何表访问创建一个视图 (可选地使用代替触发器)。
但是在这些视图上使用DML会引发ORA-01031-权限不足...这是造成的,因为视图引用了双重对象。为了澄清,请参阅我在LiveSQL上也提供的这个示例:
create table test_employees ( id number , name varchar2(255) , hiredate date ); create or replace view test_employees_vw as with comments as ( select /*+ materialize */ '' from dual with read only) /* 创建: xxxx | | 更改日志: xxxx */ select id , name , hiredate from test_employees / insert into test_employees_vw (id,name, hiredate) values (1, 'John', date '2017-12-01') ; > ORA-01031: insufficient privileges
请注意,我希望在这种情况下使用 “仅阅读” 子句会有所帮助,但没有成功 (可能这只是在使用数据库链接时有效)。
除了在注释块中使用dual之外,在SQL中重新生成应用程序上下文时,还有DUAL的用例。
当然,通过创建我们自己的 “dummy” (公共) 表,这是一种解决方法,但是,我认为这种对偶的特定约束有些出乎意料,并不方便。
还是我错过了什么?你有什么看法?
专家解答
问题是你只有双选择privs。您需要在其上授予其他DML才能使用此方法。
但是... 当然,您可以在选择后立即发表评论吗?
我每次都会选择这个而不是 “虚拟双重” 方法。
但是... 当然,您可以在选择后立即发表评论吗?
create table test_employees ( id number , name varchar2(255) , hiredate date ); create or replace view test_employees_vw as select /* Created : xxxx || Changelog : xxxx */ id , name , hiredate from test_employees; insert into test_employees_vw (id,name, hiredate) values (1, 'John', date '2017-12-01'); select * from test_employees_vw; ID NAME HIREDATE 1 John 01-DEC-2017 00:00:00 set long 10000 select text from user_views where view_name = 'TEST_EMPLOYEES_VW'; TEXT select /* Created : xxxx || Changelog : xxxx */ id , name , hiredate from test_employees
我每次都会选择这个而不是 “虚拟双重” 方法。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




