网络数据库讲稿(触发器)[小编推荐]_网络数据库讲稿概论

2020-02-29 其他范文 下载本文

网络数据库讲稿(触发器)[小编推荐]由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“网络数据库讲稿概论”。

网络数据库讲稿

4/8/2013

触发器

P191

一、触发器概述

1.是一种特殊的存储过程。

2.不能被显式调用,只能由一些特定的操作(命令)引发(激活),这些命令是:INSERT、DELETE、UPDATE、CREATE、ALTER、DROP、GRANT、DENY、REVOKE等。3.每个触发器由三部分组成①触发器名称:命名规则与变量名、存储过程名相同; ②激活该触发器的操作(命令动词)。③一个存储过程。

4.使用触发器可强制实现数据的一致性和完整性。

二、触发器的分类(按引发命令分类)及其工作原理

1.DML触发器(表级)(1)触发器必须依附于某一个表(触发器必须被包含在某一个表中)。(2)激活该触发器的操作:可以是INSERT、DELETE、UPDATE之一。(3)当上述操作发生在包含触发器的表上时,触发器中的过程被自动执行。(4)支持两种类型的触发器: ①AFTER 可以为同一表的同一操作定义多个该类型的触发器,并可定义执行顺序; ②INSTEAD OF 同一表的同一操作只能定义一个该类型的触发器。(5)工作原理

P193 临时逻辑表INSERTED和DELETED。2.DDL触发器(数据库级和服务器级)(1)触发器必须依附于某一个数据库(触发器必须被包含在某一个数据库中)。

(2)激活该触发器的操作:可以是CREATE、ALTER、DROP、GRANT、DENY、REVOKE等之一。

(3)当上述操作发生在包含触发器的数据库上时,触发器中的过程被自动执行。(4)只有AFTER型触发器。

三、创建DML触发器

P194 用命令CREATE TRIGGER创建 例: 1.

CREATE TRIGGER 增加学生学分 ON 成绩

FOR INSERT AS UPDATE 学生 SET 已修学分=已修学分+(SELECT SUM(学分)FROM 课程 WHERE 课程编号 IN(SELECT DISTINCT 课程编号 FROM INSERTED

网络数据库讲稿

4/8/2013 WHERE 学生.学号= INSERTED.学号 AND 分数>=60))WHERE EXISTS(SELECT DISTINCT 课程编号 FROM INSERTED WHERE 学生.学号= INSERTED.学号 AND 分数>=60)2.

CREATE TRIGGER 减少学生学分 ON 成绩 FOR DELETE AS UPDATE 学生 SET 已修学分=已修学分-(SELECT SUM(学分)FROM 课程 WHERE 课程编号 IN(SELECT DISTINCT 课程编号 FROM DELETED WHERE 学生.学号=DELETED.学号 AND 分数>=60))WHERE EXISTS(SELECT DISTINCT 课程编号 FROM DELETED WHERE 学生.学号=DELETED.学号 AND 分数>=60)3.CREATE TRIGGER 修改学生学分 ON 成绩 FOR UPDATE AS UPDATE 学生 SET 已修学分=已修学分-(SELECT SUM(学分)FROM 课程 WHERE 课程编号 IN(SELECT DISTINCT 课程编号 FROM DELETED WHERE 学生.学号=DELETED.学号 AND 分数>=60))WHERE EXISTS(SELECT DISTINCT 课程编号 FROM DELETED WHERE 学生.学号=DELETED.学号 AND 分数>=60)UPDATE 学生 SET 已修学分=已修学分+(SELECT SUM(学分)FROM 课程WHERE 课程编号 IN(SELECT DISTINCT 课程编号 FROM INSERTED WHERE 学生.学号=INSERTED.学号 AND 分数>=60))WHERE EXISTS(SELECT DISTINCT 课程编号 FROM INSERTED WHERE 学生.学号=INSERTED.学号 AND 分数>=60)

4.“修改学生学分”也可改为:

CREATE TRIGGER 修改学生学分 ON 成绩 FOR UPDATE AS UPDATE 学生 SET 已修学分=(SELECT SUM(学分)FROM 课程

网络数据库讲稿

4/8/2013 WHERE 课程编号 IN(SELECT 课程编号 FROM 成绩

WHERE 学生.学号=成绩.学号 AND 分数>=60))

然后可执行下列命令,并检验执行结果。

--INSERT INTO 成绩 VALUES('200202','L2020308',83)--INSERT INTO 成绩 VALUES('200202','L2030501',80)--INSERT INTO 成绩 VALUES('200202','L2030506',75)--DELETE FROM 成绩 WHERE 学号='200202' AND LEFT(课程编号,1)='L'--UPDATE 成绩 SET 分数=80 WHERE 学号='200202' AND LEFT(课程编号,1)='L'

四、创建DDL触发器

P198 例: 1.P199 CREATE TRIGGER 禁删与修改表 ON DATABASE FOR DROP_TABLE,ALTER_TABLE AS PRINT '请不要删除或修改表!' ROLLBACK TRANSACTION 2.CREATE TRIGGER 禁删与修改数据库 ON ALL SERVER FOR DROP_DATABASE,ALTER_DATABASE AS PRINT '请不要删除或修改数据库!' ROLLBACK TRANSACTION

DROP DATABASE 订货管理

五、嵌套触发器和递归触发器

P199, P200 1.概念

2.禁用与启用嵌套触发器

①在对象资源管理器中打开服务器属性窗口,选“高级”,修改“允许触发器激发其他触发器”。

②调用存储过程 SP_CONFIGURE 'NESTED TRIGGER',1或0 3.禁用与启用递归触发器

①在对象资源管理器中打开数据库属性窗口,选“选项”,修改“递归触发器已启用”。②命令 ALTER DATABASE 数据库名 SET RECURSIVE_TRIGGERS ON 或 OFF 4.例

六、管理触发器

P201 1.查看

网络数据库讲稿

4/8/2013 2.修改 3.禁用 4.删除

《网络数据库讲稿(触发器)[小编推荐].docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
网络数据库讲稿(触发器)[小编推荐]
点击下载文档
相关专题 网络数据库讲稿概论 触发器 讲稿 小编 网络数据库讲稿概论 触发器 讲稿 小编
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文