暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
Gbase 8s触发器介绍.doc
601
3页
2次
2021-01-27
免费下载
GBase 8s
触发器介绍
触发器也称为
Trigger,
本质上是一种存储过程
.
在进行
DML/DQL
操作时
,
触发器中的语句
被数据库服务器自动执行
.
触发器可用于维护多表之间的数据一致性
.
1.
触发器的优点
触发器的主要优点在于其自动响应的特性
,
对表的增
/
/
改操作都可触发相应触发器
.
发器可起到约束条件的作用
,
但其功能更为强大
,
能够实现更为复杂的操作
.
但需要注意的是
,
触发器虽然功能强大
,
但如果对其过分依赖
,
则会导致数据库过于复杂
,
进而难以维护
;
对性
能也会产生影响
.
2.
触发器的组成
触发器由以下
3
部分组成
:
1)
触发事件
,
插入
/
修改
/
删除等操作
.
2)
触发条件
触发器被激活后
,
将对触发条件进行测试
,
如果条件成立
,
则执行预定义动作
,
否则
不做响应
.
3)
触发动作
在满足触发条件的情况下
,
预定义的动作被
8s
服务器自动执行
.
预定义动作可以用
于防止特定事件的发生
(
:
撤销触发事件所作的更改
);
预定义动作还可以是与触发
事件不相关的操作
.
3.
触发器的创建
8s
的触发器创建语法如下
:
CREATE TRIGGER <
触发器名
> <
触发事件
> ON <
目标表
>
<
触发时间
>
WHEN <
触发条件
>
<
触发动作
>
1)
触发器名
只有目标表的创建者或具有
DBA
权限的用户可以创建此表上的触发器
.
一张表或视图上
,
可以创建多个关联增
/
/
/
查操作的触发器
.
2)
触发事件
触发事件定义了激活触发器的
SQL
语句类型
.
触发事件有
4
: INSERT, UPDATE, DELETE,
SELECT.
UPDATE/SELECT
,
可以使用
"OF <
属性列表
>"
从句指定触发列
;
DELETE/INSERT
只支持整行触发
.
3)
目标表
当在目标表上发生触发事件时
,
定义在该表上的触发器被激活
.
4)
触发时间
8s
支持
3
种触发时间
:
1> BEFORE:
在触发时间执行之前
,
如果满足
WHEN
条件
,
则先执行触发器定义的动作
.
2> AFTER:
在触发时间执行之后
,
如果满足
WHEN
条件
,
则执行触发器定义的动作
.
3> FOR EACH ROW:
在触发时间执行过程中
,
对触发事件涉及的各行
,
执行触发器定义
的动作
.
5)
触发条件
WHEN
从句用于定义触发条件
,
可以为任意条件表达式
.
只有当触发条件为为真时
,
发动作才被执行
,
否则不做动作
.
如果省略触发条件
,
则只要触发器被激活
,
触发动作
即被执行
.
6)
触发动作
触发动作在触发器被激活后执行
.
触发动作可以为
SQL
语句或对存储过程
/
函数的调用
.
可以通过
NEW
关键字引用
INSERT/DELETE
事件之后的新值
; OLD
关键字引用
INSERT/DELETE
事件之前的旧值
.
4.
触发器示例
1.
建立
insert
触发器
,
当对
t1
表执行插入操作时
,
id
插入表
t2:
CREATE TRIGGER insert_t1
INSERT ON t1
REFERENCING NEW AS new
FOR EACH ROW
(
INSERT INTO t2 (id)
VALUES (new.id)
);
2.
建立
update
触发器
,
当更新
t1
表的
name
列时
,
将对应的
id
插入表
t2:
CREATE TRIGGER update_t1
UPDATE OF name ON t1
REFERENCING OLD AS old
FOR EACH ROW
(
INSERT INTO t2 (id)
VALUES (old.id)
);
3.
建立
select
触发器
,
当查询到
t1
表的
name
列值等于
"Bill"
,
将对应的
id
插入表
t2:
CREATE TRIGGER select_t1
SELECT ON t1
of 3
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜