第10章销售管理数据库中触发器的应用



《第10章销售管理数据库中触发器的应用》由会员分享,可在线阅读,更多相关《第10章销售管理数据库中触发器的应用(27页珍藏版)》请在文档大全上搜索。
1、 SQL Server 2005数据库应用技术数据库应用技术 清华大学出版社清华大学出版社第十章第十章 销售管理数据库中触销售管理数据库中触发器的应用发器的应用 SQL Server 2005数据库应用技术数据库应用技术 清华大学出版社清华大学出版社技能目标技能目标u理解触发器的概念、功能和类型;理解触发器的概念、功能和类型;u学会根据实际开发销售管理数据库中的触发器,以完学会根据实际开发销售管理数据库中的触发器,以完成系统整体设计的目的。成系统整体设计的目的。 SQL Server 2005数据库应用技术数据库应用技术 清华大学出版社清华大学出版社10.1.1 10.1.1 触发器触发器 触
2、发器实际上就是一种特殊类型的存储过程,它触发器实际上就是一种特殊类型的存储过程,它在执行一定操作时自动触发执行。在在执行一定操作时自动触发执行。在SQL Server SQL Server 20052005之前的版本中,触发器是针对数据表的特殊的存之前的版本中,触发器是针对数据表的特殊的存储过程,当这个表发生了储过程,当这个表发生了InsertInsert、UpdateUpdate或或DeleteDelete操操作时,如果该表有对应操作的触发器,这个触发器就作时,如果该表有对应操作的触发器,这个触发器就会自动激活执行。在会自动激活执行。在SQL Server 2005SQL Server 20
3、05中,触发器有中,触发器有了更进一步的功能,在数据表(库)发生了更进一步的功能,在数据表(库)发生CreateCreate、AlterAlter和和DropDrop操作时,也会自动激活执行。操作时,也会自动激活执行。 SQL Server 2005数据库应用技术数据库应用技术 清华大学出版社清华大学出版社10.1.2 触发器的功能u完成更复杂的数据约束完成更复杂的数据约束 u检查所做的检查所做的SQL所作的操作是否允许所作的操作是否允许u修改其它数据表里的数据修改其它数据表里的数据 u调用更多的存储过程调用更多的存储过程 u返回自定义的错误信息返回自定义的错误信息 u更改原本要操作的更改原本
4、要操作的SQL语句语句 u防止数据表结构被更改或数据表被删除防止数据表结构被更改或数据表被删除 SQL Server 2005数据库应用技术数据库应用技术 清华大学出版社清华大学出版社10.1.3触发器的类型uDML触发器 DMLDML触发器是当数据库服务器中发生数据操作语触发器是当数据库服务器中发生数据操作语言(言(Data Manipulation LanguageData Manipulation Language)事件时执行)事件时执行的存储过程的存储过程uDDL触发器 DDL触发器是在响应数据定义语言(触发器是在响应数据定义语言(Data Definition Language)事件
5、时执行的存储过程。)事件时执行的存储过程。 SQL Server 2005数据库应用技术数据库应用技术 清华大学出版社清华大学出版社10.2 DML触发器 10.2.1 DML触发器的类型 根据触发的时机可以把根据触发的时机可以把DMLDML触发器划分为:触发器划分为:uAfterAfter触发器:这类触发器是在记录已经改变完之触发器:这类触发器是在记录已经改变完之后(后(afterafter),才会被激活执行,它主要是用于记),才会被激活执行,它主要是用于记录变更后的处理或检查,一旦发现错误,也可以用录变更后的处理或检查,一旦发现错误,也可以用Rollback TransactionRoll
6、back Transaction语句来回滚本次的操作。语句来回滚本次的操作。uInstead OfInstead Of触发器:这类触发器一般是用来取代原触发器:这类触发器一般是用来取代原本要进行的操作,在记录变更之前发生的,它并不本要进行的操作,在记录变更之前发生的,它并不去执行原来去执行原来SQLSQL语句里的操作(语句里的操作(InsertInsert、UpdateUpdate、DeleteDelete),而去执行触发器本身所定义的操作。),而去执行触发器本身所定义的操作。 SQL Server 2005数据库应用技术数据库应用技术 清华大学出版社清华大学出版社触发器的类型触发器的类型u根
7、据引发触发器的操作不同分为根据引发触发器的操作不同分为INSERTINSERT触发器、触发器、UPDATEUPDATE触发器和触发器和DELETE DELETE 触发器。触发器。 SQL Server 2005数据库应用技术数据库应用技术 清华大学出版社清华大学出版社DMLDML触发器触发器 创建触发器的语法格式如下。创建触发器的语法格式如下。CREATE TRIGGER 触发器名触发器名 ON 表名或视图名表名或视图名 FOR | AFTER | INSTEAD OF INSERT, | UPDAT E, | DELETE WITH ENCRYPTION AS IF UPDATE (列名列名
8、1) AND | OR UPDATE(列名列名2)n sql_statements SQL Server 2005数据库应用技术数据库应用技术 清华大学出版社清华大学出版社10.2.2 DML触发器的工作原理u在在SQL Server 2005 SQL Server 2005 里,执行触发器时,系统会里,执行触发器时,系统会自动创建两个特殊的逻辑表,一个是自动创建两个特殊的逻辑表,一个是InsertedInserted表,表,一个是一个是DeletedDeleted表。表。uInsertedInserted表和表和deleteddeleted表,由系统来维护,用户表,由系统来维护,用户不能对其
9、修改,它们只存在内存而不是数据库中。不能对其修改,它们只存在内存而不是数据库中。这两个表的结构总是与被触发器作用的表的结构这两个表的结构总是与被触发器作用的表的结构相同。触发器执行完之后,与该触发器相关联的相同。触发器执行完之后,与该触发器相关联的这两个表也会被删除。这两个表也会被删除。 SQL Server 2005数据库应用技术数据库应用技术 清华大学出版社清华大学出版社uInsertedInserted逻辑表:存放用于执行逻辑表:存放用于执行insertinsert和和updateupdate语句语句而要从表中插入的所有行。在执行而要从表中插入的所有行。在执行insertinsert或或
10、update update 语语句时,新的行同时添加到激活触发器的表和句时,新的行同时添加到激活触发器的表和insertedinserted表中,表中,insertedinserted表的内容是激活触发器的表中新行的表的内容是激活触发器的表中新行的拷贝。拷贝。DeletedDeleted表中:存放用于执行表中:存放用于执行deletedelete或或updateupdate语句而要语句而要从表中删除的行。在执行从表中删除的行。在执行deletedelete或或updateupdate语句时,被语句时,被删除的行从激活触发器的表中被移动到删除的行从激活触发器的表中被移动到deleteddelet
11、ed表中,表中,两个表不会有共同的行。两个表不会有共同的行。 SQL Server 2005数据库应用技术数据库应用技术 清华大学出版社清华大学出版社INSERTEDINSERTED表和表和DELETEDDELETED表表 操作类型操作类型INSERTEDINSERTED表表DELETEDDELETED表表INSERT插入的记录插入的记录不创建不创建DELETE不创建不创建删除的记录删除的记录UPDATE修改后的记录修改后的记录修改前的记录修改前的记录 SQL Server 2005数据库应用技术数据库应用技术 清华大学出版社清华大学出版社创建创建DMLDML触发器触发器 1 1、INSERT