HGDB与oracle中dual的区别

本文对比了HGDB和Oracle数据库中的dual对象。在Oracle中,dual是一个系统表,可以用于插入和查询。而在HGDB中,dual表现为一个视图,不允许插入操作,因为它是非物化的,不源自单表或单视图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值