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,则不会创建视图)。
我正在使用 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,则不会创建视图)。