- 1、本文档共68页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章DB2函数、存储过程和触发器
方法二:定义一个前触发器。 步骤: (1)连接到“XSCJ”数据库: ?CONNECT TO xscj USER puser USING 123456 # ?(2)查看是否存在名称为“puser.block_insert_cjb”的触发器,如果存在,则将其删除: ?CALL puser.clear_trigger ( puser , block_insert_cjb ) # ?(3)创建触发器“puser.block_insert_cjb”: ?CREATE TRIGGER puser.block_insert_cjb BEFORE INSERT ON puser.成绩表 -- 前触发器 REFERENCING NEW AS N FOR EACH ROW BEGIN ATOMIC IF (N.学号 NOT IN (SELECT s.学号 FROM puser.学生表 s)) THEN SIGNAL SQLSTATE 70001 ( 错误:该记录的学号在学生表中不存在!) ; END IF; IF (N.课程号 NOT IN (SELECT c.课程号 FROM puser.课程表 c)) THEN SIGNAL SQLSTATE 70002 ( 错误:该记录的课程号在课程表中不存在!) ; END IF; END # 4)INSTEAD OF触发器的设计 【例10.23】 创建3个INSTEAD OF触发器,它们分别为已定义的视图(“图书视图”)提供INSERT、UPDATE和DELETE逻辑。 其中,“图书信息表”、“图书报价表”和“图书视图”是用下面语句定义的。 ?CONNECT TO xscj USER puser USING 123456 # -- 定义“图书信息表” CREATE TABLE puser.图书信息表 ( 书号 CHAR(17), 书名 VARCHAR(80), 作者 VARCHAR(16) ) # -- 定义“图书报价表” CREATE TABLE puser.图书报价表 ( 书号 CHAR(17), 价格 DECIMAL(10,2) ) # -- 定义“图书视图” CREATE VIEW puser.图书视图(书号, 书名, 价格) AS SELECT bi.书号, 书名, 价格 FROM puser.图书信息表 bi, puser.图书报价表 bp WHERE bi.书号 = bp.书号 # INSTEAD OF触发器代替对视图的插入操作 步骤: (1)连接到“XSCJ”数据库: ?CONNECT TO xscj USER puser USING 123456 # ?(2)查看是否存在名称为“puser.bookview_insert”的触发器,如果存在,则将其删除: ?CALL puser.clear_trigger ( puser , bookview_insert ) # ?(3)创建触发器“puser.bookview_insert”: ?CREATE TRIGGER puser.bookview_insert INSTEAD OF INSERT ON puser.图书视图 REFERENCING NEW AS N_bp FOR EACH ROW INSERT INTO puser.图书报价表 (书号, 价格) VALUES( COALESCE((SELECT 书号 FROM puser.图书信息表 AS bi WHERE bi.书号 = N_bp.书号), RAISE_ERROR(70003, 不存在的书号)), COALESCE(价格, 0.00) ) # ? (4)测试上面定义的INSTEAD OF触发器: 如果这时“图书信息表”中不存在书号为“ISBN7-111-12345-1”的图书信息,那么此时执行下面命令就会报错: ?INSERT INTO puser.图书视图 VALUES( ISBN7-111-12345-1, 书名一, 48.00 ) # INSTEAD OF触发器代替对视图的更新操作 步骤: (1)连接到“XSCJ”数据库: ?CONNECT TO xscj USER puser USING 123456 # ?(2)查看是否存在名称为“puser.bookview_update”的触发器,如果存在,则将其删除: ?CALL puser.clear_trigger ( puser , bookview_update ) # (3)创建触发器“puser.bookview_update”: ?CREATE TRIGGER puser.bookview_update INSTEA
您可能关注的文档
最近下载
- 内蒙古鄂尔多斯准格尔经济开发区(大路产业园)区域性地震安全性评价报告.docx VIP
- 部编版六年级语文上册《夏天里的成长》课件.pptx
- 山西省2020年中考数学试题(Word版,含答案与解析).pdf VIP
- 长沙市雅礼中学2023-2024学年高二上学期期中考试物理试题及参考答案.pdf VIP
- 精品解析:山东省菏泽市2023-2024学年高二上学期11月期中化学试题(解析版).docx VIP
- 离婚协议书标准版下载[汇编].pdf
- 2023年山东省青岛西海岸新区自然资源局遴选劳务派遣人员69人笔试参考题库(共500题)答案详解版.docx
- 消融电极产品技术要求模板.docx
- YBT 6016-2022球墨铸铁管绿色工厂评价要求.pdf
- “双减”背景下家校共育的问题及策略.doc
文档评论(0)