Oracle dual对象是表:
SQL> select owner,OBJECT_TYPE from dba_objects where OBJECT_NAME = 'DUAL';
OWNER OBJECT_TYPE
------------------------------ -------------------
SYS TABLE
PUBLIC SYNONYM
SQL> insert into dual values ('a');
1 row created.
SQL> /
1 row created.
SQL> /
1 row created.
SQL> /
1 row created.
SQL> /
1 row created.
SQL> commit;
Commit complete.
SQL> select * from dual;
D
-
X
===================================================================================
HGDB中dual对象是视图:
highgo=# \d dual
View "oracle_catalog.dual"
Column | Type | Modifiers
--------+-------------------+-----------
dummy | character varying |
highgo=# \d+ dual
View "oracle_catalog.dual"
Column | Type | Modifiers | Storage | Description
--------+-------------------+-----------+----------+-------------
dummy | character varying | | extended |
View definition:
SELECT 'X'::character varying AS dummy;
highgo=# insert into dual values ('a');
错误: 无法插入到视图"dual"
详细信息: 不来自单表或单视图的视图不能自动更新.
提示: 启用向视图插入操作, 要提供INSTEAD OF INSERT触发器或者提供一个无条件的 ON INSERT DO INSTEAD 规则.
语句: insert into dual values ('a');
错误: 无法插入到视图"dual"
DETAIL: 不来自单表或单视图的视图不能自动更新.
HINT: 启用向视图插入操作, 要提供INSTEAD OF INSERT触发器或者提供一个无条件的 ON INSERT DO INSTEAD 规则.
highgo=# \d pg_views
View "pg_catalog.pg_views"
Column | Type | Modifiers
------------+------+-----------
schemaname | name |
viewname | name |
viewowner | name |
definition | text |
highgo=# select * from pg_views where viewname='dual';
schemaname | viewname | viewowner | definition
----------------+----------+-----------+------------------------------------------
oracle_catalog | dual | highgo | SELECT 'X'::character varying AS dummy;
(1 row)
SQL> select owner,OBJECT_TYPE from dba_objects where OBJECT_NAME = 'DUAL';
OWNER OBJECT_TYPE
------------------------------ -------------------
SYS TABLE
PUBLIC SYNONYM
SQL> insert into dual values ('a');
1 row created.
SQL> /
1 row created.
SQL> /
1 row created.
SQL> /
1 row created.
SQL> /
1 row created.
SQL> commit;
Commit complete.
SQL> select * from dual;
D
-
X
===================================================================================
HGDB中dual对象是视图:
highgo=# \d dual
View "oracle_catalog.dual"
Column | Type | Modifiers
--------+-------------------+-----------
dummy | character varying |
highgo=# \d+ dual
View "oracle_catalog.dual"
Column | Type | Modifiers | Storage | Description
--------+-------------------+-----------+----------+-------------
dummy | character varying | | extended |
View definition:
SELECT 'X'::character varying AS dummy;
highgo=# insert into dual values ('a');
错误: 无法插入到视图"dual"
详细信息: 不来自单表或单视图的视图不能自动更新.
提示: 启用向视图插入操作, 要提供INSTEAD OF INSERT触发器或者提供一个无条件的 ON INSERT DO INSTEAD 规则.
语句: insert into dual values ('a');
错误: 无法插入到视图"dual"
DETAIL: 不来自单表或单视图的视图不能自动更新.
HINT: 启用向视图插入操作, 要提供INSTEAD OF INSERT触发器或者提供一个无条件的 ON INSERT DO INSTEAD 规则.
highgo=# \d pg_views
View "pg_catalog.pg_views"
Column | Type | Modifiers
------------+------+-----------
schemaname | name |
viewname | name |
viewowner | name |
definition | text |
highgo=# select * from pg_views where viewname='dual';
schemaname | viewname | viewowner | definition
----------------+----------+-----------+------------------------------------------
oracle_catalog | dual | highgo | SELECT 'X'::character varying AS dummy;
(1 row)