第10章第2讲 触发器

(20页)

'第10章第2讲 触发器'
第2讲 输入参数 输出参数 状态值 第10章 存储过程和触发器—触发器的使用 1第2讲 u 格式 uCreate procedure char output output as uDeclare char char int uSet ‘020102’ uExec output output uPrint 输入实参将学号 输出形参将课程名和 传递给输入形参 成绩返回给输出实参 第10章 存储过程和触发器—触发器的使用 2第2讲 不能实现。因为约束只能进行简单条件的限制 ,对于复杂的条件,只能通过触发器来实现。 第10章 存储过程和触发器—触发器的使用 3第2讲 第10章 存储过程和触发器—触发器的使用 4第2讲 第10章 存储过程和触发器—触发器的使用 5第2讲 ——1.触发器的概念 第10章 存储过程和触发器—触发器的使用 6第2讲 ——2.触发器的类型 第10章 存储过程和触发器—触发器的使用 7第2讲 ——3.临时表 第10章 存储过程和触发器—触发器的使用 8第2讲 ——3.临时表 第10章 存储过程和触发器—触发器的使用 9第2讲 ucreate trigger on for after instead of insert update delete as 第10章 存储过程和触发器—触发器的使用 10第2讲 ——1.insert触发器 实例1:在xscj库的xs_kc表上创建1个名为tr_insert_cj的触发器, 当向xs_kc表进行插入操作时激发该触发器,并给出提示信 息“有新成绩插入到xs_kc表中!” ü create trigger tr_insert_cj on xs_kc after insert as print ‘有新成绩信息插入到xs_kc表! ’ ü go ü insert into xs_kc values( '020105', '101', 87, null ) 说明:该语句执行后,会激活触发器,显示提示信息。当再执行一次 该插入语句,请思考:该触发器能不能被激活?为什么? 原因:当插入的数据违反了先前定义的约束规则时,则约束优先于触 发器起作用,该插入触发器不会被激发。 第10章 存储过程和触发器—触发器的使用 11第2讲 ——1.insert触发器 实例2:要在xscj库的xsqk表中插入下面所示的2条信息,如果 在该表上未创建触发器,则可成功插入到xsqk表中。但我们 希望插入的信息必须是“计算机” 系,否则就撤消刚才的 插入,并返回错误信息。用触发器实现该约束。 ü use xscj ü insert into xsqk(学号,姓名,性别,出生日期,专业名,所在系) values(‘020401’, ‘陈!, 1, ‘2020-09-26’, ‘中国近代史’, ‘物理’ ) ü insert into xsqk(学号,姓名,性别,出生日期,专业名,所在系) values(‘020402’, ‘黄梅’, 0, ‘2020-09-26’, ‘信息管理’, ‘计算机’ ) 第10章 存储过程和触发器—触发器的使用 12第2讲 ——1.insert触发器 请分析:该题中Select语句的作用? where子句可否不要? ü create trigger tr_insert_xsqk on xsqk after insert as declare @所在系 char(10) select @所在系= xsqk.所在系 from xsqk, inserted where xsqk.学号 = inserted.学号 IF @所在系<> '计算机 ' 提取插入信息中的所在系所对应的值 begin rollback transaction -- 撤消插入操作 raiserror(‘不能插入非计算机系的学生信息!’,16 ,10) end else print ‘有新信息插入到xsqk表中! ’ 第10章 存储过程和触发器—触发器的使用 13第2讲 ——1.insert触发器 raiserror(‘不能插入非计算机系的学生信息!’, 16 , 1) 以字符串形式 错误的严重等级。0~18可被任何用户引发 ,19~25只能由系统管理员引发。 发生错误时的状态信息(0~127)。 第10章 存储过程和触发器—触发器的使用 14第2讲 ——2.delete触发器 课堂练习1:在xscj库的xsqk表上创建1个名为tr_delete_xsqk的 触发器,当要删除指定学号的行时,激发该触发器,撤消 删除操作,并给出提示信息“不能删除xsqk表中的信息!”。 ü create trigger tr_delete_xsqk on xsqk after delete as rollback transaction print ‘不能删除xsqk表中的信息!’ ü go ü delete xsqk where 学号= '020101' 第10章 存储过程和触发器—触发器的使用 15第2讲 ——3.update触发器 实例3:在xsqk表上创建一个触发器。当更新了某位 学生的学号信息时,就激活触发器级联更新xs_kc 表中相关成绩记录中的学号信息,并使用print语 句返回一个提示信息。 【题意分析】:用下列语句修改了xsqk表中的学号 ‘020101’ ,那么xs_kc表中的该学号也应同时修改 ,否则,将引起数据不一致。解决的方法有: ü update xsqk set 学号=‘020111’ where 学号=‘020101’ 第10章 存储过程和触发器—触发器的使用 16第2讲 ——3.update触发器 请思考:该题中参考了哪些表?为什么能从临时表中提取更 新前后的学号值? ü create trigger tr_update_xsqk1 on xsqk after update as declare @原学号 char(6), @新学号 char(6) select @原学号=deleted.学号, @新学号= inserted.学号 from deleted, inserted where delete可d.姓 省名 =去 inserted.姓名 print ‘准备级联更新xs_kc表中的学号信息….’ update xs_kc set 学号=@新学号 where 学号=@原学号 print ‘已经级联更新了xs_kc表中原学号为’+ @原学号 +‘的成绩信息 ! 第10章 存储过程和触发器—触发器的使用 17第2讲 ——3.update触发器 课堂练习2:在xsqk表上创建名为tr_update_xsqk2的触发器,当 对该表的“姓名”列修改时激发该触发器,使用户不能修 改“姓名”列。 ü create trigger tr_update_xsqk2 on xsqk after update as if update(姓名) begin rollback transaction -- 撤消修改操作 raiserror(‘不能修改学生姓名!’ , 16 ,1) end ü go ü update xsqk set 姓名=‘小花’ where 姓名=‘杨颖’ 第10章 存储过程和触发器—触发器的使用 18第2讲 alter trigger drop trigger 第10章 存储过程和触发器—触发器的使用 19第2讲 第10章 存储过程和触发器—触发器的使用 20第2讲 输入参数 输出参数 状态值 第10章 存储过程和触发器—触发器的使用 1第2讲 u 格式 uCreate procedure
关 键 词:
第10章第2讲触发器
 剑锋文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:第10章第2讲 触发器
链接地址: //www.wenku365.com/p-43737717.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给剑锋文库发消息,QQ:1290478887 - 联系我们

本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有【成交的100%(原创)】。本站是网络服务平台方,若您的权利被侵害,侵权客服QQ:1290478887 欢迎举报。

1290478887@qq.com 2017-2027 //www.wenku365.com 网站版权所有

粤ICP备19057495号 

收起
展开