首页 数据库触发器

数据库触发器

举报
开通vip

数据库触发器触发器触发器 触发器概述 问题的引入 触发器的概念 触发器的原理 触发器的分类 触发器的创建、修改及删除 应用示例触发器概述问题的引入增加一个记录删除一个记录(“95003”,”002”,56)950010069041 在[学生管理数据库]中,某学生的[选课门数]是一个经常访问的属性,因此在student表中增加一个属性sselnum(smallint). 在实际应用 实例展示触发器概述 考虑该问题涉及两个表之间的关系,可否用参照完整性来实现?  可否用嵌套...

数据库触发器
触发器触发器 触发器概述 问题的引入 触发器的概念 触发器的原理 触发器的分类 触发器的创建、修改及删除 应用示例触发器概述问题的引入增加一个记录删除一个记录(“95003”,”002”,56)950010069041 在[学生管理数据库]中,某学生的[选课门数]是一个经常访问的属性,因此在student表中增加一个属性sselnum(smallint). 在实际应用 实例展示触发器概述 考虑该问题涉及两个表之间的关系,可否用参照完整性来实现?  可否用嵌套的SQL语句来实现?  问题的解决:使用触发器trigger updatestudentsetsselnum=(selectcount(*)froms_cwheres_c.sno=student.sno) 存在的问题  触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性触发器概述触发器的概念 触发器是一种特殊类型的存储过程。在SQLServer里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。 触发器触发原因对表进行插入、更新或删除操作触发事件。 触发结果:另一段程序的执行。 思考:在上例中,触发原因是什么?触发结果是什么?触发器概述 触发器和存储过程的区别:INSERTINTOs_cVALUES(‘95001’,‘006’,90)EXECGetgrade‘95001'触发器可以用于SQLServer约束、默认值和规则的完整性检查。触发器主要是通过事件触发而执行的,而存储过程是通过调用存储过程名称而执行的。触发器概述特殊性在于:l它与表紧密相连,不可以脱离表单独存在。l不允许使用参数,没有返回值。l不允许用户调用,当对表进行插入、删除、修改操作时由系统自动调用并执行(相当于事件 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 )。触发器概述触发器可以实现比较复杂的完整性约束:l 扩展约束、默认值和规则对象的完整性检查。l自动生成数据。l检查数据的修改,防止对数据不正确的修改,保证数据表之间数据的正确性和一致性。l自定义复杂的安全权限。触发器作为一种数据库对象,在syscomment系统表中存储其完整的定义信息,在sysobject系统表中有该对象的记录。触发器概述1)触发器自动执行在对表的数据作了任何修改(比如手工输入或者应用程序采取的操作)之后立即被激活。3)触发器可以实现比CHECK约束更为复杂的数据完整性约束在数据库中为了实现数据完整性约束,可以使用CHECK约束或触发器。CHECK约束不允许引用其它表中的列来完成检查工作,而触发器可以引用其它表中的列。2)触发器能够对数据库中的相关表实现级联更改触发器是基于一个表创建的,但是可以针对多个表进行操作,实现数据库中相关表的级联更改。触发器概述 AFTER类型触发器: 只有执行某一操作(INSERTUPDATEDELETE)之后,触发器才被触发。 只能在表上定义。触发器的分类 INSTEADOF触发器: 并不执行其所定义的操作(INSERT、UPDATE、DELETE),而仅是执行触发器本身。 既可在表上定义INSTEADOF触发器,也可以在视图上定义INSTEADOF触发器。触发器概述触发器的原理 Inserted表和Deleted表的理解:Inserted和Deleted是逻辑(概念)表。当在定义了触发器的表上发生了修改操作时会自动派生出这两个视图。 当在表上发生插入操作时,新插入的行将出现在插入视图中。 当在表上发生删除操作时,被删除的行将出现在删除视图中。 当在表上发生更新操作时,旧行出现在删除视图中,新行出现在插入视图中。触发器概述 触发器的原理 Inserted表和Deleted表的理解:(1)如果基于S_C表的UPDATE操作定义了触发器(2)再执行语句:UPDATES_CSETgrade=70WHEREsno=‘95001’ANDcno=‘001’在UPDATE语句执行过程中Deleted表的内容:Inserted表的内容:S_C表触发器的创建 触发器的基本操作——创建在创建触发器前,必须注意以下几点:1、CREATETRIGGER语句必须是批处理中的第一条语句。2、只能在当前数据库中创建触发器,名称必须遵循标识符的命名规则。3、表的所有者具有创建触发器的默认权限,不能将该权限转给其他用户。4、不能在临时表或系统表上创建触发器,但是触发器可以引用临时表,但是不能引用系统表。触发器的创建创建触发器命令格式:CREATETRIGGERtrigger_nameONtabel{FOR|AFTER|INSTEADOF}[INSERT],[UPDATE],[DELETE]AS[IFUPDATE(column)[{AND|OR}UPDATE(column)……]]sql_statement一、企业管理器二、查询 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 器触发器的创建{FOR|AFTER|INSTEADOF}:FOR|AFTER:在数据变动以后触发;INSTEADOF:在数据变动以前触发;[INSERT|UPDATE|DELETE]:分别对应插入触发器、修改触发器、删除触发器说明:触发器的创建例:当在仓库表上发生插入操作时会输出“插入了一个仓库元组”的信息。USE仓库管理GOCREATETRIGGERWH_INON仓库FORINSERTASPRINT'插入了一个仓库元组'INSERT仓库VALUES('WH6','南京',700)触发器的创建例:在仓库表上定义一个删除触发器,使得当删除仓库记录时,同时将所属所有职工记录的仓库号字段值置为空值NULL。CREATETRIGGERWH_DELON仓库FORDELETEASUPDATE职工SET仓库号=NULLWHERE仓库号IN(SELECT仓库号FROMdeleted)DELETE仓库WHERE仓库号='WH6'仓库(仓库号,城市,面积)职工(仓库号,职工号,工资)触发器的创建例:对S表定义一个删除触发器,使得当删除学生记录时,将S_C表中相应的选课记录删除。S(SNO,SNAME)S_C(SNO,CNO,SCORE)触发器的创建例:对职工表定义一个插入触发器,使得当插入职工记录时,检查所参照的仓库元组是否存在,如果不存在,则撤消所做的插入操作。仓库(仓库号,城市,面积)职工(仓库号,职工号,工资)触发器的创建CREATETRIGGERWH_INSON职工FORINSERTASIFNOTEXISTS(SELECT*FROM仓库WHERE仓库号=(SELECT仓库号FROMINSERTED))BEGINRAISERROR('非法仓库号!',1,1)ROLLBACKTRANSACTIONENDINSERT职工VALUES('WH5','E10',1600)IN触发器的创建例:对S_C表定义一个插入触发器,使得当插入选课记录时,检查所参照的学生学号和课程号是否存在,如果不存在,则撤消所做的插入操作。S(SNO,SNAME)C(CNO,CNAME)S_C(SNO,CNO,SCORE)触发器的创建例:对职工表定义一个更新触发器,使得当职工变换所属仓库时,检查所参照的仓库元组是否存在,如果不存在,则撤消所做的更新操作,如果新的仓库号是WH2则将工资提高10%。触发器的创建CREATETRIGGERTR_UPDATEON职工FORUPDATEASDECLARE@WHNOCHAR(4)IFUPDATE(仓库号)BEGINIFNOTEXISTS(SELECT*FROM仓库WHERE仓库号=(SELECT仓库号FROMINSERTED))BEGINRAISERROR('非法仓库号!',16,1)ROLLBACKTRANSACTIONENDELSEBEGINSELECT@WHNO=仓库号FROMINSERTEDIF@WHNO='WH2'UPDATE职工SET工资=工资*1.1WHERE职工号=(SELECT职工号FROMINSERTED)ENDEND触发器的创建例:当插入或更新学生成绩时,触发器检查该课程是否为考查课,若是,则通过的成绩只能以60分计,未通过的只能以40分计。涉及的表结构:C1(Cno,Cname,Ctype)S_C(Sno,Cno,Score)触发器的创建CREATETRIGGERSCORE_KCONS_CFORINSERT,UPDATEASDECLARE@SCOREINT,@CTYPECHAR(4)SELECT@SCORE=SCORE,@CTYPE=CTYPEFROMC1,INSERTEDWHEREINSERTED.CNO=C1.CNOIF(@CTYPE='考查')AND(@SCORE<>60AND@SCORE<>40)BEGINRAISERROR('该课程为考查课,成绩以60或40计!',16,1)ROLLBACKTRANSACTIONEND触发器的创建CREATETRIGGERSCORE_KCONS_CFORINSERT,UPDATEASDECLARE@SCOREINT,@CTYPECHAR(4)SELECT@SCORE=SCORE,@CTYPE=CTYPEFROMC1,INSERTEDWHEREINSERTED.CNO=C1.CNOIF(@CTYPE='考查')BEGINIF@SCORE>=60UPDATES_CSETSCORE=60WHERECNO=(SELECTCNOFROMINSERTED)ANDSNO=(SELECTSNOFROMINSERTED)ELSEUPDATES_CSETSCORE=40WHERECNO=(SELECTCNOFROMINSERTED)ANDSNO=(SELECTSNOFROMINSERTED)END触发器的修改ALTERTRIGGERtrigger_nameONtabel{FOR|AFTER|INSTEADOF}[INSERT],[UPDATE],[DELETE]AS[IFUPDATE(column)[{AND|OR}UPDATE(column)……]]sql_statement修改触发器命令格式:触发器的删除DROPTRIGGERtrigger-name例:删除SCORE_KC触发器。DROPTRIGGERSCORE_KC删除触发器命令格式:
本文档为【数据库触发器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
xxj7584
暂无简介~
格式:ppt
大小:204KB
软件:PowerPoint
页数:0
分类:建造师考试
上传时间:2020-03-26
浏览量:0