- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
触发器
?
触发器类似于过程、函数,因为它们都是拥有说明部分、语句执行部分和异常处理部分的有名的PL/SQL块。与包类似,触发器必须存储在数据库中,并且不能被块进行本地化说明。但是,对于过程而言,可以从另一个块中通过过程调用显式地执行一个过程,同时在调用时可以传递参数。对于触发器而言,当触发事件发生时就会显式地执行该触发器,并且触发器不接受参数。
Evaluation only.
Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.
Copyright 2004-2011 Aspose Pty Ltd.
触发事件是在数据库表上执行的DML(INSERT、UPDATE、DELETE)操作。使用触发器,可以做许多事情,包括:
●?维护不可能在表创建时通过说明性约束进行的复杂
的完整性约束限制。
● 通过记录所进行的修改以及谁进行了修改来审计表
中的信息。
●当表被修改的时候,自动给需要执行操作的程序发信号。
Evaluation only.
Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.
Copyright 2004-2011 Aspose Pty Ltd.
1.触发器概念及组成
?
制作一个数据库触发器,目的是在某个表上执行特定的数据维护操作时,隐含地执行一个PL/SQL块。
Evaluation only.
Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.
Copyright 2004-2011 Aspose Pty Ltd.
Evaluation only.
Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.
Copyright 2004-2011 Aspose Pty Ltd.
例子:制作一个数据库触发器。记录下那些超过其工种工
资范围的工资值(但不禁止这种操作)
?
CREATE TRIGGER check_sal
BEFORE INSERT OR UPDATE OF sal,job ON emp
FOR EACH ROW
WHEN(new.job<> ‘PRESIDENT’)
DECLAER
v_minsal sal_guide.minsal%TYPE;
v_maxsal sal_guide.maxsal%TYPE;
e_sal_out_of_range EXCEPTION;
Evaluation only.
Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.
Copyright 2004-2011 Aspose Pty Ltd.
BEGIN
SELECT minsal,maxsal
INTO v_minsal,v_maxsal
FROM sal_guide
WHERE job = :new. job;
IF :new.sal<v_minsal OR :new:sal>v_maxsal THEN
RAISE e_sal_out_of_range;
END IF;
EXCEPTION
WHEN e_sal_out_of_range THEN
INSERT INTO audit_message(line_nr,line)
VALUES(l,‘Salary’|| TO_CHAR(:new.sal)||
‘is out of range for employee’||TO_CHAR(:new.empno));
END;
Evaluation only.
Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0.
Copyright 2004-2011 Aspose Pty Ltd.
★ 关联触发器
?
把一个数据库触发器的动作与另一个触发器联系起来,使之触发这另一个触发器。
Evaluation only.
Created with Aspose.Slides for .NE
文档评论(0)