Oracle-Noforce

Oracle- Noforce

我正在使用 Sql Developer 访问 oracle 数据库。最近我创建了一个带有选项 NOFORCE CREATE OR REPLACE NOFORCE VIEW XXXX (...) 的视图 之后我查看了新创建的视图的定义,我得到了一个看起来像 CREATE OR REPLACE FORCE VIEW "name"."XXXX" 的语句 现在我不太确定,如果这是 Sql 开发人员的错误显示设置,或者视图是用强制创建的。

这似乎就是 Oracle 在创建视图后处理视图的方式,您可以从以下示例中看出:

create or replace noforce view dummy_vw as select dummy from dual;

select * from user_views where view_name = 'DUMMY_VW';

VIEW_NAME TEXT_LENGTH TEXT                   TYPE_TEXT_LENGTH TYPE_TEXT OID_TEXT_LENGTH OID_TEXT VIEW_TYPE_OWNER VIEW_TYPE SUPERVIEW_NAME                 EDITIONING_VIEW READ_ONLY
--------- ----------- ---------------------- ---------------- --------- --------------- -------- --------------- --------- ------------------------------ --------------- ---------
DUMMY_VW           22 select dummy from dual                                                                                                              N               N        

select DBMS_METADATA.GET_DDL('VIEW','DUMMY_VW') from DUAL;

  CREATE OR REPLACE FORCE VIEW "SCHEMA"."DUMMY_VW" ("DUMMY") AS 
  select dummy from dual;

因为 force/noforce 只影响创建时的视图,返回脚本时是否带 FORCE 关键字并不重要,所以我猜他们只是默认它显示为FORCE 关键字,因为视图存在(如果视图脚本有错误并且使用了 NOFORCE,则不会创建视图)。