SQL Sever2005中利用触发器实现数据库完整性的教学案例设计
- 格式:doc
- 大小:25.00 KB
- 文档页数:5
SQL Sever2005中利用触发器实现数据库完整性的教学案例
设计
摘要:本文详细设计了sql sever 2005中利用触发器实现数据库完整性的教学案例,通过案例驱动的方式完成了数据库完整性的教学任务。
实践表明,此教学方式能够弥补传统教学的不足,激发每位学生的学习兴趣和学习潜能,锻炼学生良好的职业规范道德、团队分工协作等素质,大大缩短教学情景与实际软件开发的差距,增强以实践能力培养为目标的应用型人才培养新模式,从而实现应用型人才的培养目标。
关键词:案例设计;教学改革;数据库完整性
中图分类号:tp311.138 文献标识码:a 文章编号:1007-9599 (2012)19-0000-02
数据库的完整性是指防止不合语义的即不正确、不相容的数据
进入数据库[1]。
绝大部分rdbms都支持使用触发器实现数据库的
完整性。
触发器(trigger)是保证数据完整性的一种方法,是用
户定义在基本表上的一类由事件驱动的特殊过程。
它与表格紧密相连,可以看做是表格定义的一部分,当用户修改指定表中的数据时,触发器将会自动执行[2]。
触发器基于一个表创建,但是可以针对
多个表进行操作,所以触发器常被用来实现复杂的商业规则。
1 案例描述
在银行的自动取款机系统中,有两个数据表:账户信息表(bank)和交易信息表(transinfo)。
账户信息表(bank)中记录每个账户
的账号cardid、账户的户主姓名customername、该账户上目前的余额currentmoney。
交易信息表(transinfo)中记录每一笔交易的时间transdate、交易的卡号cardid、交易的类型transtype、交易的金额transmoney。
提出问题:现在余萧萧使用自动取款机系统取200元钱,如何编写程序使该自动取款机系统自动修改余萧萧的余额。
2 案例分析
当客户进行一项存款或取款操作时,会在交易信息表(transinfo)上形成一个插入操作。
可以利用这个插入操作的数据实现在账户信息表(bank)中自动修改余萧萧的余额。
3 案例实现
根据案例要求,引导学生进行讨论并完成触发器的设计。
具体参考操作步骤如下:
step 1:根据案例要求和以前的知识积累,学生完成数据库、数据表的创建。
step 2:根据案例描述,在交易信息表(transinfo)上创建一个insert类型的触发器trig_transinfo。
代码如下:step 3:可以通过在交易信息表(transinfo)中插入一条记录模拟用户的一次取款操作来查看触发器是否被激发执行了。
现执行sql语句:insert into transinfo (cardid,transtype,transmoney)values (‘10010001’,’支取’,200),可以在结果窗格中,看到消息“transinfo中cardid为10010001的记录被
修改了”。
step 4:刷新账户信息表(bank)并查询该表中的数据,看到余萧萧的账户余额被修改成了800。
4 课堂总结
4.1 对触发器的理解。
触发器是在对表进行插入、更新或删除操作时自动执行的存储过程,它是被定义在特定的表上,与某个表相关,不能直接调用,自动触发执行的一个事务[3]。
4.2 触发器的分类。
按触发器激活的时机不同,分为:后触发器:只有执行了insert、delete、update操作后,才激发的触发器。
替代触发器:不执行命令所定义的insert、delete、update操作,而仅执行触发器中定义的代码。
按引起触发的事件不同,分为:insert触发器:当被创建触发器的表上有insert操作时该类型的触发器被触发并自动在内存里创建inserted表,该表中保存了insert操作时的数据副本。
delete触发器:当被创建触发器的表上有delete操作时该类型的触发器被触发并自动在内存里创建deleted表,该表中保存了delete操作时的数据副本。
update触发器:当被创建触发器的表上有updated操作时该类型的触发器被触发并自动在内存里创建inserted表和deleted表,deleted表中保存了修改之前的数据副本,inserted表中保存了修改后的数据副本。
4.3 inserted表和deleted表的作用。
触发器代码最强大的功能之一是能够比较纪录的新旧版本,其中最关键的是inserted和deleted这两个临时表。
触发器被触发时,系统自动在内存中创建deleted表或inserted
表,这两个表都是只读的,并且不允许修改,触发器执行完成后,这两个表都自动被删除。
inserted表临时保存了插入或更新后的记录行,可以从inserted表中检查插入或更新后的数据是否满足业务需求,如果不满足,则向用户报告错误消息,并回滚插入操作。
deleted表临时保存了删除或更新前的记录行,可以从deleted表中检查被删除或更新前的数据是否满足业务需求,如果不满足,则向用户报告错误消息,并回滚插入操作。
4.4 如何创建触发器。
创建触发器的语法:
实践证明,通过案例能够把抽象的原理、概念等具体化,能够使学生清楚地认识到这些原理、概念在实际软件开发中的用处,激发了每位学生的学习兴趣和学习潜能。
数据库系统原理课程教学中案例教学的应用,提升了学生的能力和质量,加强了学生理论联系实际的能力,培养了学生独立思考、发现问题、解决问题的能力,锻炼了学生良好的职业规范道德、团队分工协作等素质,加强了学生应用数据库技术进行系统设计与开发甚至科研的能力,使学生能够独立地、创造性地进行学习[4]。
训练和培养了双师型队伍的可持续发展,使得教师能够跟踪最新技术的发展动态,结合专业实际把新的教学方法和手段带进课堂,提高了教学效率和教学效果。
增强了以实践能力培养为目标的应用型人才培养新模式,大大缩短教学情景与实际软件开发的差距,从而实现了应用型人才的培养目标。
一系列改革的实施符合应用型教育的要求,对推进应用型人才培养有着非常重要的意义。
参考文献:
[1]王珊,萨师煊.数据库系统概论[m],北京:高等教育出版社2006:151.
[2]胡锦丽.数据库原理及应用案例教程[m],北京:北京大学出版社.2008:161-166.
[3]刘晓平.触发器在数据库中的应用.韶关学院学报[j].2007,28(3):35-38.
[4]张丽梅.案例教学法的研究与教学实践.黑龙江教育
[j].2006(3):51-52.
基金项目:滨州学院2007年度教学研究项目,《基于案例教学的数据库教学改革的研究》项目编号:bzxyjyxm200738。
2008年度校级重点课程《数据库系统原理》,项目编号:bzxyzdkc200904。