欢迎来到天天文库
浏览记录
ID:39338765
大小:1.01 MB
页数:49页
时间:2019-07-01
《存储过程触发器及自定义函数1》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据库实用技术SQLServer2008第十章存储过程、触发器和自定义函数第十章存储过程、触发器、自定义函数存储过程1触发器2用户自定义函数3SQLServer2008实训:T-SQL编程的高级应用4为什么需要触发器(TRIGGER)呢?典型的应用就是银行的取款机系统为什么需要触发器演示:为什么需要触发器.sql帐户信息表bank交易信息表transInfo张三取钱200问题:没有自动修改张三的余额最优的解决方案就是采用触发器:它是一种特殊的存储过程也具备事务的功能它能在多表之间执行特殊的业务规则张三开户1000元,李四开户1元张三李四王五赵二王三宋二刘五插
2、入什么是触发器删除触发器触发赵二退休赵二员工表退休员工表10.2触发器10.2.1触发器概念触发器(Trigger)是在对表进行插入、更新或删除操作时自动执行的存储过程。触发器通常用于强制业务规则触发器是一种高级约束,可以定义比用CHECK约束更为复杂的约束可执行复杂的SQL语句(if/while/case)可引用其它表中的列第十章存储过程、触发器、自定义函数SQLServer2008触发器的优点(1)触发器自动执行;(2)可以调用存储过程;(3)可以强化数据条件约束;常用来实现复杂的数据完整性。(4)触发器可以禁止或回滚违反引用完整性的更改;(5)级联、并
3、行运行;(6)触发器可以嵌套。10.2触发器SQLServer2008提供三类触发器:DML触发器:在数据库中发生数据操作(如:INSERT、UPDATE、DELETE)事件时自动执行。DDL触发器:在服务器或数据库中发生数据定义(如:CREATE、ALTER、DROP)事件时自动执行。该类触发器可用于执行一些数据库管理任务。登录触发器:在与SQLServer实例建立用户会话时自动执行,主要用来审核和控制服务器会话。为响应LOGON事件而激发存储过程。第十章存储过程、触发器、自定义函数SQLServer2008触发器触发时:系统自动在内存中创建deleted
4、表或inserted表只读,不允许修改;触发器执行完成后,自动删除inserted表临时保存了插入或更新后的记录行可以从inserted表中检查插入的数据是否满足业务需求如果不满足,则向用户报告错误消息,并回滚插入操作deleted表临时保存了删除或更新前的记录行可以从deleted表中检查被删除的数据是否满足业务需求如果不满足,则向用户报告错误消息,并回滚插入操作inserted和deleted表2-1inserted和deleted表2-2修改操作inserted表deleted表增加(INSERT)记录存放新增的记录------删除(DELETE)记录
5、-----存放被删除的记录修改(UPDATE)记录存放更新后的记录存放更新前的记录inserted表和deleted表存放的信息触发器10.2.2创建触发器1.DML触发器DML触发器在用户对表中的数据进行插入(INSERT)、修改(UPDATE)和删除(DELETE)时自动运行。使用触发器模板创建触发器(略):在展开SQLServer实例中,依次展开“数据库”→“BillingSys”→“表”,继续展开要创建触发器的具体表节点,选择“触发器”,右击选择“新建触发器”命令,打开“查询编辑器”,在“查询编辑器”中出现触发器的编程模板。当模板修改完成后,单击窗口
6、工具栏中的“执行”按钮,创建该触发器。第十章存储过程、触发器、自定义函数SQLServer2008触发器比如选择Customer表,打开触发器模板,其模板代码如下:……CREATETRIGGER.ONAFTER7、UPDATE>ASBEGIN--SETNOCOUNTONaddedtopreventextraresultsetsfrom--interferingwithSELECTstatements.SETNOCOUNTON;--InsertstatementsfortriggerhereENDGO第十章存储过程、触发器、自定义函数SQLServer2008触发器使用CREATETRIGGER创建DML触发器:语法格式如下:CREATETRIGGER<触发器名>ON<表名8、视图名>[WITHENCRYPTION]FOR9、AFTER10、INSTEADOF--触发器的类型[11、INSERT][,][UPDATE][,][DELE
7、UPDATE>ASBEGIN--SETNOCOUNTONaddedtopreventextraresultsetsfrom--interferingwithSELECTstatements.SETNOCOUNTON;--InsertstatementsfortriggerhereENDGO第十章存储过程、触发器、自定义函数SQLServer2008触发器使用CREATETRIGGER创建DML触发器:语法格式如下:CREATETRIGGER<触发器名>ON<表名
8、视图名>[WITHENCRYPTION]FOR
9、AFTER
10、INSTEADOF--触发器的类型[
11、INSERT][,][UPDATE][,][DELE
此文档下载收益归作者所有