当前位置:首页 > 问答百科 > 正文内容

数据库触发器是什么(SQL语言基础:触发器相关知识介绍)

福瑞号2022-12-01 19:15:09问答百科151
数据库触发器是什么(SQL语言基础:触发器相关知识介绍)-图1
1、触发器 Trigger介绍
触发器可以实现完整性规则和保证一些复杂业务规则的实施。针对示警或满足特定 条件下自动执行某项任务来说,触发器时十分有用的机制。触发器是由事件1驱动的特殊过程,一旦由某个用户定义,任何用户对该触发器指定的数据新增、删除、修改操作,系统会自动激活相应的触发器,在核心层进行集中的完整性控制。
2、触发器特点
1) 当数据库开发者声明事件发生时,触发器激活,事件可以时对某个特定关系的插入、删除、更新。
2) 触发器被事件激活后,不是立即执行,而是先由触发器测试触发条件,若条件不成立,响应该事件的触发器将不做任何处理。
3) 如果触发器的申明条件满足时,则与该触发器相连的动作由DBMS执行。可以阻止事件、撤销事件。
注意事项:
1)触发器为数据库对象时,创建触发器必须指定名称、在其定义触发器的表、触发器触发时机、触发器做什么事情。触发器不能作用在临时表,但可以引用临时表。
3、触发器分类
行级触发器:对事件影响的每一行(FOR EACH ROW) ,每一元组执行。
语句级触发器:对整个事件只执行一次触发过程(FOR EACH STATEMENT)。是触发器默认方式。
4、创建触发器
触发器定义包括:触发器的触发事件、触发器执行的动作。针对update操作中还可以指定特定的属性或属性组的修改为触发条件。事件的触发还有两个相关时间:before、after。
before:触发器是在事件发生之前触发。
after:触发器是在事件发生之后触发。
创建触发器语法格式:
create trigger <触发器名称>[{after|before}]
{[delete|update|updateof[列名清单]]}
on 表名
[referencing <临时视图名称>]
[when<触发条件>]
begin
<触发动作>
end [触发器]
参数说明:
before:说明DBMS在执行触发语句之前激发触发器。
after:说明DBMS在执行触发语句之后激发触发器。
delete:delete触发器,每当一个delete语句从表中删除一行时激发触发器。
insert:insert,每当一个insert语句从表中插入一行时激发触发器。
update:update触发器,每当update语句修改由of子句指定的列值时激发触发器。如果忽略of子句,表示任何列值时,DBMS都将激发触发器。
referencing <临时视图名称>:指定临时视图的别名。在触发器运行过程中,系统会生成两个临时视图,分别存放更新值(旧值)、更新后的值(新值)。
行级触发器:默认临时视图名分别时OLD、NEW。
语句触发器:默认临时视图名分别时OLD-TABLE、NEW-TABLE。触发器结束临时视图也会随着销毁。
WHEN<触发条件>:指定触发器的触发条件。只有条件满足触发条件时,才会激发触发器。触发条件必须包含临时视图名、不包含查询。
针对示警或满足特定条件下自动执行某项任务来说,触发时非常有用的机制。
5、更改触发器
语法格式:
alter trigger <触发器名> [{after|before}]
要执行的SQL语句
end
6、删除触发器
drop trigger <触发器名>[,...n]
说明:n表示可以指定多个触发器的占位符。
7、完整示例
- 需求: 当向员工表插入一条记录时,希望mysql自动同时往日志表插入数据
-- 创建触发器(添加)
CREATE TRIGGER tri_empAdd AFTER INSERT ON employee FOR EACH ROW -- 当往员工表插入一条记录时
INSERT INTO test_log(content) VALUES('员工表插入了一条记录');
CREATE TRIGGER tri_empUpd AFTER UPDATE ON employee FOR EACH ROW -- 当往员工表修改一条记录时
INSERT INTO test_log(content) VALUES('员工表修改了一条记录');
CREATE TRIGGER tri_empDel AFTER DELETE ON employee FOR EACH ROW -- 当往员工表删除一条记录时
INSERT INTO test_log(content) VALUES('员工表删除了一条记录');
-- 删除创建触发器
DROP TRIGGER tri_empAdd;
触发器事件:数据库表行的插入、删除、修改。也就是执行insert、delete、update语句。
想了解更多精彩内容,快来关注数据库技术笔记

扫描二维码推送至手机访问。

版权声明:本文由福瑞号发布,如需转载请注明出处。

本文链接:http://furui.com.cn/7594.html

“数据库触发器是什么(SQL语言基础:触发器相关知识介绍)” 的相关文章

仙剑奇侠传3结局(《仙剑奇侠传3》结局是什么)

仙剑奇侠传3结局(《仙剑奇侠传3》结局是什么)

《仙剑奇侠传3》的结局是景天用自己的生命换取天下人的性命,雪见依偎在景天的怀中看雪,但是景天的寿命已经不久了。紫萱为了徐长卿选择放手,但是她把魔尊的心还回去之后,自己的容貌很快就衰老了,徐长卿和紫萱明明很相爱却不能相守,当了蜀山掌门的徐长卿舞剑为在南诏国的紫萱送雪。两对情侣都没有最后走在一起。 《...

推荐几本关于笑傲江湖的同人小说(推荐几部武侠同人类网文佳作)

推荐几本关于笑傲江湖的同人小说(推荐几部武侠同人类网文佳作)

大家好,小编是火某,今天为大家推荐几部武侠同人类网文佳作,希望大家可以喜欢。 《偷香高手》 穿越成宋青书的金庸世界大乱斗,本来很不喜欢这种设定的,但作者意外的设计得还不错,违和感不是太高。原名夫人们的香裙,后宫多多,不过全处全收是不要想了,从名字就可以看出来,主角是人妻控、绿帽控。但抛开原著出场就...

千里送鹅毛礼轻情意重意思(阳谷民间故事传说“千里送鹅毛)

千里送鹅毛礼轻情意重意思(阳谷民间故事传说“千里送鹅毛)

《阳谷吏千里送鹅毛》 杨俊生 “千里送鹅毛,礼轻情意重”是人们交往相互赠送礼尚往来经常说的一句话,意思是赠品不论轻重,关键是心意到了。这句话来自哪里,在阳谷县流传着这样一个故事。 唐太宗李世民自登基以来举贤用能,治国有方,国家大治,百姓安居乐业,生活渐渐好起来。在此情况下,全国上下从百姓到官府都有...

充话费怎么充(怎么进行手机充值)

充话费怎么充(怎么进行手机充值)

方法有很多。下面蒋佛系为大家一一介绍。 一、微信充值 1.打开微信 2.点击“我”这栏,点击“支付” 2.点击“我”这一栏。点击“支付” 3.进入“支付”,点击“手机充值” 3.进入“支付”,点击“手机充值” 4.输入手机号,选择充值数额,进行充值。下方也可以对自己手机余额进行查询...

什么叫弥留状态请详细些(人在临终前有哪些表现)

什么叫弥留状态请详细些(人在临终前有哪些表现)

生命的流逝,是每个人都会经历的一个过程,在自己经历之前,我们总会经历很多别人生命的离去。尤其是家人朋友,因为衰老,或是其他的一些因素,使得生命走到了尽头。其实人在去世之前,身体也会有一些变化的,若是能够及时的发现,并且抓住这些表现,多陪陪家人,也能够让他离开得更安详一点。 人生命流逝之前,身体会有...

煤的液化技术有几种(涨知识)

煤的液化技术有几种(涨知识)

在你眼中,煤炭还只是电厂发电和冬天取暖的燃料吗? 然而,煤炭除了可以作为燃料,可以说生活中处处离不开它,通过工业生产,煤炭变成了重要的生产原料,与我们生活中的“衣食住行”息息相关。 下面,带你看看经过一番神奇的转变,煤炭可以变成什么~~ 01 煤炭的焦化 煤炭的焦化是指将煤在隔绝空气的条件下进行...