达梦8触发器、视图、物化视图、序列、同义词、自增列、外部链接

本文详细介绍了达梦数据库中的触发器,包括表级、事件和时间触发器的创建、启用、禁用和删除。此外,还讲解了视图的概念和创建语法,以及物化视图的作用和刷新选项。序列的创建、修改和删除也被涵盖,同义词的创建和删除为用户提供对象别名。最后,文章讨论了外部链接的创建,允许透明访问远程数据库。

触发器:

DM 提供了三种类型的触发器:
1. 表级触发器:基于表中的数据进行触发;
2. 事件触发器:基于特定系统事件进行触发;
3. 时间触发器:基于时间而进行触发。
创建触发器的语法格式为:

CREATE [OR REPLACE] TRIGGER 触发器名[WITH ENCRYPTION]
BEFORE|AFTER|INSTEAD OF
DELETE|INSERT|UPDATE [OF 列名]
ON 表名
[FOR EACH ROW [WHEN 条件]]
BEGIN
DMSQL 程序语句
END;


例如创建一个监视用户对表 emp 中的数据所进行的删除操作

如果在表 EMP 上进行 DELETE 操作,则激发这个触发器,例如
DELETE FROM EMP;

--禁用

 ALTER TRIGGER 触发器名 DISABLE;

--启用

ALTER TRIGGER 触发器 ENABLE;

--删除
DROP TRIGGER [IF EXISTS] 触发器名;

视图:

视图是关系数据库系统提供给用户以多种角度观察数据库中数据的重要机制,它简化了用户数据模型,提供了逻辑数据独立性,实现了数据共享和数据的安全保密。视图是数据库技术中一个十分重要的功能。从系统实现的角度讲,视图是从一个或几个基表(或视图)导出的表,但它是一个虚表,即数据字典中只存放视图的定义(由视图名和查询语句组成),而不存放对应的数据,这些数据仍存放在原来的基表中。

语法格式
CREATE [OR REPLACE] VIEW
[<模式名>.]<视图名>[(<列名> {,<列名>})]
AS <查询说明>
[WITH [LOCAL|CASCADED]CHECK OPTION]|[with read only];
<查询说明>::=<表查询> | <表连接>
<表查询>::=<子查询表达式>[ORDER BY 子句]

 查看视图结构:

CALL SP_VIEWDEF('SYSDBA', 'V_INDEX');

 物化视图:

物化视图是从一个或几个基表导出的表,同视图相比,它存储了导出表的真实数据。当基表中的数据发生变化时,物化视图所存储的数据将变得陈旧,用户可以通过手动刷新或自动刷新来对数据进行同步。
 

语法格式
CREATE MATERIALIZED VIEW [< 模 式 名 >.]< 物 化 视 图 名 >[(< 列 名 >{,< 列 名 >})][BUILD
IMMEDIATE|BUILD DEFERRED][<STORAGE 子句>][<物化视图刷新选项>][<查询改写选项>]AS<查询
说明>
<STORAGE 子句>::=参见 3.5.1.1 节
<查询说明>::= <表查询> | <表连接>
<表查询>::=<子查询表达式>[ORDER BY 子句]
<物化视图刷新选项> ::= REFRESH <刷新选项> {<刷新选项>} | NEVER REFRESH
<刷新选项> ::= [<刷新方法>][<刷新时机>][<刷新规则>]
<刷新方法> ::= FAST | COMPLETE | FORCE
< 刷 新 时 机 > ::= [ON DEMAND | ON COMMIT] [START WITH datetime_expr | NEXT
datetime_expr]
<刷新规则> ::= WITH PRIMARY KEY | WITH ROWID
<查询改写选项>::= [DISABLE | ENABLE] QUERY REWRITE
<datetime_expr>::= SYSDATE[+<数值常量>]

 CREATE MATERIALIZED VIEW mv_index REFRESH WITH ROWID START WITH SYSDATE NEXT SYSDATE + 1 AS select t1.* from t1,t4 where t1.c4=t4.c4;

序列:

序列(sequence)是 DM 数据库中的数据库实体之一。通过使用序列,多个用户可以产生和使用一组不重复的有序整数值。比如可以用序列来自动地生成主关键字值。序列通过提供唯一数值的顺序表来简化程序设计工作。

一旦序列生成,用户就可以在 SQL 语句中用以下伪列来存取序列的值:
1. CURRVAL 返回当前的序列值;
2. NEXTVAL 如果为升序序列,序列值增加并返回增加后的值;如果为降序序列,序列值减少并返回减少后的值。

语法格式
CREATE SEQUENCE [ <模式名>.] <序列名> [ <序列选项列表>];
<序列选项列表> ::= <序列选项>{<序列选项>}
<序列选项> ::=
INCREMENT BY <增量值>|
START WITH <初值>|
MAXVALUE <最大值>|
NOMAXVALUE|
MINVALUE <最小值>|
NOMINVALUE|
CYCLE|
NOCYCLE|
CACHE <缓存值>|
NOCACHE|
ORDER |
NOORDER |
GLOBAL |
LOCAL

--创建序列
CREATE SEQUENCE SEQ_QUANTITY INCREMENT BY 1;

--查询序列

序列修改:

ALTER SEQUENCE [ <模式名>.] <序列名> [ <序列修改选项列表>];
<序列选项列表> ::= <序列修改选项>{<序列修改选项>}
<序列修改选项> ::=
INCREMENT BY <增量值>|
MAXVALUE <最大值>|
NOMAXVALUE|
MINVALUE <最小值>|
NOMINVALUE|
CYCLE|
NOCYCLE|
CACHE <缓存值>|
NOCACHE|
ORDER|
NOORDER |
CURRENT VALUE <当前值>

创建完序列后直接修改序列的步长
CREATE SEQUENCE SEQ1 INCREMENT BY 1000 START WITH 5 NOMAXVALUE NOMINVALUE CACHE 10;

ALTER SEQUENCE SEQ1 INCREMENT BY 1 ;
SELECT SEQ1.NEXTVAL FROM DUAL;

创建序列后使用NEXTVAL访问了序列,然后修改步长。
CREATE SEQUENCE SEQ2 INCREMENT BY 1000 START WITH 5 NOMAXVALUE NOMINVALUE
NOCACHE ;
SELECT SEQ2.NEXTVAL FROM DUAL;
ALTER SEQUENCE SEQ2 INCREMENT BY 1 ;
SELECT SEQ2.NEXTVAL FROM DUAL;

修改序列的最小值。
CREATE SEQUENCE SEQ3 INCREMENT BY 1 START WITH 100 MINVALUE 3 ;
ALTER SEQUENCE SEQ3 MINVALUE 2;

修改序列的当前值。
CREATE SEQUENCE SEQ4 INCREMENT BY 1 START WITH 100 MINVALUE 3 ;
ALTER SEQUENCE SEQ4 CURRENT VALUE 300;
SELECT SEQ4.NEXTVAL FROM DUAL;

序列删除语句
DROP SEQUENCE [IF EXISTS] [ <模式名>.]<序列名>;

同义词:

同义词(Synonym)让用户能够为数据库的一个模式下的对象提供别名。同义词通过掩盖一个对象真实的名字和拥有者,并且对远程分布式的数据库对象给予了位置透明特性以此来提供了一定的安全性。同时使用同义词可以简化复杂的 SQL 语句。同义词可以替换模式下的表、视图、序列、函、存储过程等对象。

创建同义词:

CREATE [OR REPLACE] [PUBLIC] SYNONYM [<模式名>.]<同义词名> FOR [<模式名>.]<对象名>

在 A 模式下建立表 T1。
CREATE TABLE "A"."T1" ("ID" INTEGER, "NAME" VARCHAR(50), PRIMARY KEY("ID"));
INSERT INTO "A"."T1" ("ID", "NAME") VALUES (1, '张三');
INSERT INTO "A"."T1" ("ID", "NAME") VALUES (2, '李四');

创建公共同义词

create public synonym  s1 for a.t1;

 

删除同义词:

DROP [PUBLIC] SYNONYM [IF EXISTS] <同义词名>
 

外部链接:

外部链接对象(LINK)是 DM 中的一种特殊的数据库实体对象,它记录了远程数据库的连接和路径信息,用于建立与远程数据的联系。通过多台数据库主库间的相互通讯,用户可以透明地操作远程数据库的数据,使应用程序看起来只有一个大型数据库。用户远程数据库中的数据请求,都被自动转换为网络请求,并在相应结点上实现相应的操作。用户可以建立一个数据库链接,以说明一个对象在远程数据库中的访问路径。这个链接可以是公用的(数据库中所有用户使用),也可以是私有的(只能被某个用户使用)。
用户可以通过外部链接对远程数据库的表进行查询和增删改操作,以及本地调用远程的存储过程。

创建一个外部链接
语法格式

CREATE [OR REPLACE] [PUBLIC] LINK <外部链接名> CONNECT ['<连接库类型>'] WITH <登
录名> IDENTIFIED BY <登录口令> USING '<外部连接串>' [<OPTION 子句>];
<连接库类型>::= DAMENG | ORACLE | ODBC | DPI
<外部链接串>::=<DAMENG 外部链接串>|
<ORACLE 外部链接串> |
<ODBC 外部链接串> |
<DPI 外部链接串>
<DAMENG 外部链接串>::=[<连接类型>;]<服务器列表>
<连接类型>::= PRIMARY FIRST |
STANDBY FIRST |
PRIMARY ONLY |
STANDBY ONLY
<服务器列表>::=<服务器地址> |
<服务器地址>{,<服务器地址>}
<服务器地址>::=<实例 IP 地址>/<实例端口号> |
<MAL IP 地址>/<MAL 端口号> |
<实例名>
<ORACLE 外部链接串>::= <tsn_name> |
<description>|
<IP 地址>/<服务名>
<description>::=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=<IP地
址>)(PORT=<端口号>)))(CONNECT_DATA=(SERVICE_NAME=<服务名>)))
<ODBC 外部链接串>::= <ODBC 数据源 DSN>
<DPI 外部链接串>::= <IP 地址>:<端口号> | <服务名>
<OPTION 子句>:: =(<option 项>{, <option 项>})
<option 项>:: = LOCAL_CODE=<选项值> |
CONVERT_MODE=<选项值> |
BYTES_IN_CHAR=<选项值>|
DB_TYPE=<选项值>

使用 DM 数据库,创建一个连接到 IP 地址为 192.168.0.225 机器上的 oracle数据库的外部链接。可以通过三种方式创建:一网络服务名 tsn_name;二连接描述符description;三 <IP 地址>/<服务名>。

 CREATE OR REPLACE LINK LINK2 CONNECT 'ORACLE' WITH USER01 IDENTIFIED BY USER01
   USING '(DESCRIPTION =
   (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.244)(PORT =
   1521)))
   (CONNECT_DATA = (SERVICE_NAME = orcl) )
   )';

SQL> SELECT COUNT(*) FROM DBA_OBJECTS@LINK2;

COUNT(*)            
--------------------
72162  

 CREATE or replace PUBLIC LINK link3 CONNECT 'ORACLE' WITH USER01 IDENTIFIED BY USER01 USING '192.168.1.244/ORCL';

SQL> select count(*) from dba_objects@link3;

COUNT(*)            
--------------------
72162               

在线服务平台地址:

https://eco.dameng.com


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值