SQL Server 2000触发器技术及应用 毕业论文.doc

上传人:仙人指路1688 文档编号:2395002 上传时间:2023-02-17 格式:DOC 页数:9 大小:34.50KB
返回 下载 相关 举报
SQL Server 2000触发器技术及应用 毕业论文.doc_第1页
第1页 / 共9页
SQL Server 2000触发器技术及应用 毕业论文.doc_第2页
第2页 / 共9页
SQL Server 2000触发器技术及应用 毕业论文.doc_第3页
第3页 / 共9页
SQL Server 2000触发器技术及应用 毕业论文.doc_第4页
第4页 / 共9页
SQL Server 2000触发器技术及应用 毕业论文.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《SQL Server 2000触发器技术及应用 毕业论文.doc》由会员分享,可在线阅读,更多相关《SQL Server 2000触发器技术及应用 毕业论文.doc(9页珍藏版)》请在三一办公上搜索。

1、SQL Server 2000触发器技术及应用目录摘要6关键词6Abstract6Key words 6引言6第一章 触发器的概念及原理 7 1.1触发器的概念 7 1.2触发器的原理 7第三章 触发器的创建、删除、修改 8 2.1特殊存储过程 8 2.2 Inserted表和Deleted表 8 2.3 Inserted of和After触发器82.4 触发器的执行过程 82.5 使用T-SQL语句来创建触发器 82.6 删除触发器 82.7 查看数据库中已有触发器 92.8 修改触发器: 92.9 相关示例 9第三章 触发器的应用实例 11结论13参考文献13致谢13SQL Server

2、2000触发器技术及应用 摘要: 触发器是SQL Server为应用程序开发人员提供的一种保证数据库中数据完整性的方法,它是一种特殊的存储过程。介绍了SQL Server触发器的概念和类型,总结了SQL Server触发器在程序设计中的应用,并给出了SQL Server触发器应用实例。关键词: SQL Server;After触发器;Instead of触发器;数据完整性;数据库设计SQL Server 2000 flip-flop technology and application Abstract: flip-flop is SQL Server for applications dev

3、elopers to offer a kind of guarantee database data integrity method, it is a special kind of storage process. Introduced the SQL Server flip-flop, summarizes the concept and types of the flip-flop in the SQL Server application program design, and gives the SQL Server flip-flop application exampleKey

4、words: SQL Server; Xpa flip-flop; Pack of flip-flop; Data integrity; Database design 引言:随着数据库在多种领域的广泛应用,数据库中数据的完整性越发显得重要,因此,在数据库中如何保证数据的完整性是数据库设计的重要内容之一,数据库的完整性是指数据库中数据的正确性、有效性和相容性,它是为了防止数据库中存在不符合语义规定的数据和防止系统输入/输出无效信息,在各种关系型数据库中为保证数据的完整性通常采用规则、Check约束、默认、存储过程等方案。第一章 触发器的概念及原理11 触发器的概念触发器是SQL Server为

5、应用程序开发人员提供的一种保证数据库中数据完整性的方法,它是一种特殊的存储过程,但它和一般的存储过程有本质的区别,存储过程可以由用户直接调用执行,而触发器不能被直接调用执行。目前大多数关系型数据库系统均支持对数据库触发器的使用.触发器通过维持不同表中逻辑上相关数据的一致性,保持了数据的相关完整性。1.2 触发器的工作原理SQL Server 2000为每个触发器都创建两个由系统来维护的不允许用户直接进行修改的逻辑概念表,即Deleted表和Inserted表.它们存放于内存中,不存放在数据库中,这两个表的结构总是与被触发器作用的表的结构相同,以用于保存用户操作可能更改的行的旧值或者新值,触发器

6、工作完成后,与触发器相关的这两个表也被自动删除,而用户却不能对表中数据进行更改,Inserted表用于存储Insert和Update语句所影响的行的副本,在一个插入或更新事务处理中,新建行被同时添加到Inserted表和触发器表中。Inserted表中的行是触发器表和新行的副本,Deleted表用于存储Delete和Update语句所影响的行的副本,在执行Delete和Update语句时,行从触发器表中被删除,并传输到Deleted表中,在对具有触发器的表(触发器表)进行操作时,其操作过程如下: 执行INSERT操作,插入到触发器表中的新行被插入到Inserted表中; 执行Delete操作,

7、从触发器表中删除的行被插入到Deleted表中; 执行UPDATE操作,先从触发器表中删除旧行,然后再插入新行,其中被删除的旧行被插入到Deleted表中,插入的新行被插入到Inserted表中。第二章 触发器的创建、删除、修改1.1 触发器是一种特殊的存储过程:它不能被显式地调用而是在往表中插入记录更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约束。 1.2 SQL Server为每个触发器都创建了两个专用表Inserted表和Deleted表。这两个表由系统来维护它们存在于内存中而不是在数据库中。这两个表的结构总是与被该触发器作用的表的结构相同。触发器执行

8、完成后与该触发器相关的这两个表也被删除。Deleted表存放由于执行Delete或Update语句而要从表中删除的所有行。Inserted表存放由于执行Insert或Update语句而要向表中插入的所有行。1.3 Instead of 和 After触发器SQL Server2000提供了两种触发器Instead of 和After 触发器。这两种触发器的差别在于他们被激活的同 Instead of触发器用于替代引起触发器执行的T-SQL语句。除表之外Instead of 触发器也可以用于视图用来扩展视图可以支持的更新操作。 After触发器在一个Insert,Update或Deleted语句

9、之后执行进行约束检查等动作都在After触发器被激活之前发生。After触发器只能用于表。一个表或视图的每一个修改动作(insert,update和delete)都可以有一个nstead of 触发器,一个表的每个修改动作都可以有多个After触发器。1.4 触发器的执行过程如果一个Insertupdate或者delete语句违反了约束那幺After触发器不会执行因为对约束的检查是在After触发器被激动之前发生的。所以After触发器不能超越约束。 Instead of 触发器可以取代激发它的操作来执行。它在Inserted表和Deleted表刚刚建立其它任何操作还没有发生时被执行。因为In

10、stead of 触发器在约束之前执行所以它可以对约束进行一些预处理。 1.5 使用T-SQL语句来创建触发器基本语句如下 create trigger trigger_name on table_name | view_name for | After | Instead of insert, update,delete as sql_statement1.6 删除触发器:基本语句如下 drop trigger trigger_name1.7 查看数据库中已有触发器:- 查看数据库已有触发器use jxcSoftwaregoselect * from sysobjects where xty

11、pe=TR- 查看单个触发器exec sp_helptext 触发器名1.8 修改触发器:基本语句如下 alter trigger trigger_name on table_name | view_name for | After | Instead of insert, update,delete as sql_statement 1.9 相关示例 1)在Orders表中建立触发器当向Orders表中插入一条订单记录时检查goods表的货品状态status是否为1(正在整理)是则不能往Orders表加入该订单。create trigger orderinserton ordersafter

12、 insertas if (select status from goods,insertedwhere goods.name=inserted.goodsname)=1beginprint the goods is being processedprint the order cannot be committedrollback transaction -回滚避免加入end 2)在Orders表建立一个插入触发器在添加一条订单时减少Goods表相应的货品记录中的库存。create trigger orderinsert1on ordersafter insertasupdate goods

13、 set storage=storage-inserted.quantityfrom goods,insertedwheregoods.name=inserted.goodsname 3)在Goods表建立删除触发器实现Goods表和Orders表的级联删除。create trigger goodsdeleteon goodsafter deleteasdelete from orders where goodsname in(select name from deleted) 4)在Orders表建立一个更新触发器监视Orders表的订单日期(OrderDate)列使其不能手工修改.crea

14、te trigger orderdateupdateon ordersafter updateasif update(orderdate)beginraiserror( orderdate cannot be modified,10,1)rollback transactionend 5)在Orders表建立一个插入触发器保证向Orders表插入的货品名必须要在Goods表中一定存在。create trigger orderinsert3on ordersafter insertas if (select count(*) from goods,inserted where goods.nam

15、e=inserted.goodsname)=0beginprint no entry in goods for this orderrollback transactionend6)Orders表建立一个插入触发器,保证向Orders表插入的货品信息要在Order表中添加alter trigger addOrderon Ordersfor insert asinsert into Orderselect inserted.Id, inserted.goodName,inserted.Number from inserted第三章 触发器的应用实例下面以“学生选课数据库”为例,介绍触发器的应用.

16、在学生选课数据库中有三个数据表,它们对应的表结构分别是: 学生信息表S(Sno,Sname,Ssex,Sage,Sdep)其中Sno表示学生学号,Sname表示学生姓名,Ssex表示学生性别,Sage表示学生年龄,Sdep表示学生所在系别; 课程信息表C(Cno,Cname,Ccride,number),其中Cn表示课程号,Cname表示课程名,Ccride表示该课程学分,number表示选修该课程的学生人数; 学生选课表SC(Sno,Cno,Score),其中Sno表示学生学号,Cno表示课程号,Score表示该生成绩。问题描述:利用触发器实现数据的完整性,即当向学生选课表中插入一条记录时,

17、在课程信息表中该课程的选修人数自动加1;当从学生选课表中删除一条学生选课记录时,在课程信息表中该课程选修人数自动减1;当某个学生修改自己选修的课程号时,在课程信息表中,原来该课程选修人数自动减1,新修改后的课程号人数自动加1,本例将分别创建Insert触发器、Delete触发器、Update触发器,以保证用户进行相应操作时实现表间相关数据的自动更新。1)Insert触发器代码Create Trigger Anum On SCAfter Insert/*插入数据成功以后触发*/AsDeclareCno Char(10)SelectCno=Cno From Inserted/*将插入的数据中课程号

18、取出保存到变量中*/Update C Set number=Isnull(num,0) 1Where Cno=Cno/*将该课程选修人数加1*/Go2)Delete触发器代码Create Trigger Delnum On SCAfter Delete /*删除数据成功以后触发*/AsDeclareCno Char(10)SelectCno=Cno From Deleted/*将删除的课程号取出保存到变量中*/Update C Set num=Isnull(num,0)?1Where Cno=Cno/*将该课程选修人数减1*/Go3)Update触发器代码Create Trigger Upnu

19、m On SCAfter Update /*修改数据成功以后触发*/AsDeclareCno1 Char(10),Cno2 Char(10)IF Update(Cno)/*判断是否修改了学生选课表中的课程号列*/BeginSelectCno1=Cno From Deleted/*存储修改前的课程号数据*/Update C Set num=Isnull(num,0)-1/*将修改前的课程选修人数减1*/Where Cno=Cno1SelectCno2=Cno from Inserted/*存储修改后的课程号数据*/Update C Set num=Isnull(num,0) 1/*将修改后的课程

20、选修人数据加1*/Where Cno=Cno2End说明:当利用Update语句从学生选课表中修改某个学生选修课的课程号时,该触发器被激活.从以上触发器的典型应用中可以看出,在数据库中处理复杂的表与表间逻辑关系时,触发器能使数据库的设计变得简洁和高效。结论:这次题目的内容是从数据库、数据表的创建和修改开始的,表是建立关系数据库的基本结构,用来存储数据具有已定义的属性,在表的操作过程中,有查看表信息、查看表属性、修改表中的数据、删除表中的数据及修改表和删除表的操作。从实训中让我更明白一些知识,表是数据最重要的一个数据对象,表的创建好坏直接关系到数数据库的成败,表的内容是越具体越好,但是也不能太繁

21、琐,以后在实际应用中多使用表,对表的规划和理解就会越深刻。我们实训的另一个内容是数据库的约束、视图、查询。从中我们了解到查询语句的基本结构,和简单SELECT语句的使用,多表连接查询。而在视图的操作中,也了解到了视图是常见的数据库对象,是提供查看和存取数据的另一种途径,对查询执行的大部分操作,使用视图一样可以完成。使用视图不仅可以简化数据操作,还可以提高数据库的安全性,不仅可以检索数据,也可以通过视图向基表中添加、修改和删除数据。存储过程、触发器也是我们实训的内容之一, 在操作中有建立存储过程,执行存储过程,及查看和修改存储过程,这些都是非常基础的东西,但对用户却是非常重要的呢,只有熟悉了T_

22、SQL语言,才能更好的掌握更多的东西。我们还学习了,SQL管理、数据的导入、导出、备份和还原。有SQL Server 安全访问控制;登录账户的管理;数据库角色的管理;用户权限管理。维护数据库的安全是确保数据库正常运行的重要工作。数据的备份是对SQL Server数据事务日志进行拷贝,数据库备份记录了在进行备份操作的数据库中所有数据的状态。而数据的备份还分为数据库完整备份、差异备份、事务日志备份、文件及文件组备份。做数据备份就是为了以后的数据库恢复用。在实训内容上我们还做了仓库管理数据库,其中的要求包含了许多数据库的对象,综合了我们所学的许多知识,让我们更努力的把所学到的东西运用上去。参考文献:

23、1张峰、张莉莉,触发器在数据处理过程中的应用研究J.计算机工程与科学,2008,30(5):1-2.2张玉珍、王建宇、侯晓霞,利用触发器和元数据分析封闭模块的数据结构J.计算机工程与设计,2008,29(12):2.3刘遵仁、于忠清,从零开始SQL Server中文版基础培训教程M.北京:人民邮电出版社,2002.9.致谢: 本文是在老师的悉心指导卜完成的,从文献的查阅、论文的选题、撰写、 修改、定稿,我的每一个进步都和李老师的关注与指导密不可分。李老师在研究 方向、资料的收集、论文的选题、研究工作作的开展以及论文的最终定稿,给子 我巨大、无私的帮助。论文的字里行间无不凝结着老师的悉心指导和浮

24、淳教海,老师渊博的学识和严谨的治学态度给我留下了深刻的印象,我从他那里学到的不仅仅是专业知识,更重要的是严谨的治学态度、对事业忘我的追求、高度的使命感、责任感及和蔼热情的品质和做人的道理,这些将使我受益一生,并将激励我不断向前奋进。还有就是在这次的实习中更要对和我一起并肩战斗的其他几位小组成员说一声辛苦了,我们有了今天的成绩是我们不懈与团结。让我们共同努力创造更好的明天。在此过程中我们互相帮助,勉励是我们能完成这次任务的最大动力,也是我们之间最大的收获,最好的精神财富,愿我们还会有更好的合作!经过了这次的实习也意味着我学习生涯的结束。在湘环的三年时间转瞬即逝,借此机会我要感谢两年来传授我知识的老师们,更要感谢所有对我学业、生活上的支持和鼓励,感谢所有关心帮助过我的人。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号