第8章 触发器(课件)-《数据库应用技术-SQL Server》同步教学(机械工业版)
2024-01-01
|
25页
|
85人阅读
|
3人下载
普通
内容正文:
第8章 触发器
本单元教学目标
认识、了解触发器的作用
理解触发器的原理、过程
掌握触发器的开发语法
理解触发器的概念
3
触发器概念
触发器是一种特殊的存储过程
在插入、删除、修改特定表中数据时触发执行
拥有比数据库本身更强大的数据控制能力
4
触发器作用
安全性
可以基于数据库的值使用户具有操作数据库的某种权利
# 可以基于时间限制用户的操作
例如不允许下班后和节假日修改数据库数据
# 可以基于数据库中的数据限制用户的操作
例如不允许股票的价格的升幅一次超过10%
数据审计
可以跟踪用户对数据库的操作
# 审计用户操作数据库的语句
# 把用户对数据库的更新写入审计表
5
触发器作用
数据约束
实现数据完整性检查和约束
例如回退任何企图买进超过自己资金的货物
提供可变的缺省值
连环更新
修改或删除时级联修改或删除其它表中的与之匹配的行
修改或删除时把其它表中与之匹配的行设成NULL值
修改或删除时把其它表中与之匹配的行级联设成缺省值
6
触发器原理
使用临时表
使用临时表备份之前的数据
逐行检查
对每一行数据逐一进行检查
以上两点大大增加了系统开销
一般不能随意使用触发器
7
创建触发器
创建语法
CREATE TRIGGER + 触发器名称 + 触发时间点 + 触发事件 + ON + 表名 + FOR EACH ROW
BEGIN
…
END
触发时间点:
BEFORE或AFTER
指明是在触发事件之前还是之后执行
触发事件:
INSERT、UPDATE、DELETE事件
如:
CREATE TRIGGER upd_check BEFORE UPDATE ON account FOR EACH ROW
BEGIN
…
END
8
删除触发器
删除语法
DROP TRIGGER + 触发器名称
如:
DROP TRIGGER upd_check
9
触发器案例|建表
-- 创建表格:tab1
DROP TABLE IF EXISTS tab1;
CREATE TABLE tab1(
tab1_id varchar(11)
);
-- 创建表格:tab2
DROP TABLE IF EXISTS tab2;
CREATE TABLE tab2(
tab2_id varchar(11)
);
10
第一个触发器
-- 功能:往tab1表添加记录后自动将此记录增加到tab2表中
DELIMITER //
DROP TRIGGER IF EXISTS t_afterinsert_on_tab1;
CREATE TRIGGER t_afterinsert_on_tab1
AFTER INSERT ON tab1 FOR EACH ROW
BEGIN
insert into tab2(tab2_id) values(new.tab1_id);
END;
//
DELIMITER ;
11
触发器测试
往tab1插入记录
INSERT INTO tab1(tab1_id) values('0001')
检索tab1、 tab2数据
SELECT * FROM tab1
SELECT * FROM tab2
12
课程练习1
创建触发器:
t_afterdelete_on_tab1
功能作用:
删除tab1表记录后自动将tab2表中对应的记录删去
13
参考代码
14
课程练习1|补充选做
创建触发器:
t_afterupdate_on_tab1
功能作用:
更新tab1表记录后自动将tab2表中对应的记录更新
15
参考代码
16
new与old
old:代表操作执行前的数据行
new:代表操作执行后的数据行
若要执行如下语句:
update User set score=80 where user_id=1
则old表示未执行update语句前user_id=1这行记录
则new表示执行update语句后user_id=1这行记录
old.字段名=未执行操作前的该行对应的某字段值
new.字段名=执行操作后的该行对应的某字段值
old.score=60
new.score=80
17
new与old
new赋值:
只能在before中使用,不能在after中使用
更新操作前使用before先赋值,再插入到数据库中
如,以下语句是正确的:
CREATE TRIGGER updateprice BEFORE insert ON consumeinfo FOR EACH ROW BEGIN set new.金额=0; END;
在after中:new赋值已经结束,只能读取内容
如,以下语句是错误的:
CEATE TRIGGER update
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。