- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验六 Oracle 触发器的设计及应用
实验目的:
触发器是特定事件出现的时候,自动执行的代码块。类似于存储过程,触发 器与存储过程的区别在于:存储过程是由用户或应用程序显式调用的 ,而触发器
是不能被直接调用的。
触发器具有这些功能: 1、允许 /限制对表的修改; 2、自动生成派生列,比 如自增字段; 3、强制数据一致性; 4、提供审计和日志记录; 5、防止无效的事 务处理; 6、启用复杂的业务逻辑。
本次实验了解 Oracle 触发器的创建、修改和删除的方法和步骤,掌握在
Oracle SQL Developer 中对触发器的进行创建、修改和删除,掌握触发器触发 测试的方法。
实验步骤:
1.创建触发器 audit_employee_copy ,该触发器对修改 Employees_copy 表 的时间、用户名记录到日志表中。
运行 SQL Developer ,用自己的学号和密码建立 Connections ,并连接到
Oracle 数据库上,打开 SQL worksheets ,按顺序运行以下语句,运行时请点击 (Run Script) 按钮。
(1). 输入如下语句,建立试验表,如图 6-1所示:
create table employees_copy as select * from employees;
工作表 弯询构建器
cre-ate table emplo7ees_copv as select t^an 包皿口丄oyeeg;
:
SaWfii岀 *
X H L2 任黑已完嵐用时0. 165秒
table EMPLOYTE5_COPT 已创崖。
(2).输入如下语句,建立日志表,并查看日志表是否为空,如图 6-2所示:
create table employees_log(
who varchar2(30),
whe n date);
select * from employees_log;
A£l朝齒凤加居趣圈oi俯秒
n?f>* 查询枸建器
create tal>le employees_l<?g(
血o varckar2(30^,
vriien date);
select 吉 frcniL employe e s_ 1 og;
I .] -
凰脚本输出工
W 0日j旦眉丄任劳己兀庇用时山询秒
calle EMFL^TES_COF?已创越。
taLle EMFL0YEE5_L0G 已创韋① 未选择任何行 "
我们看至V,现在的 employees_log 表中没有记录,0 rows selected。
(3).输入如下语句,在employees_copy表上建立语句触发器,在触发器中
将时间、用户记录到employees_log表中。如图6-3所示:
Create or replace trigger audit_employee_copy
Before in sert or update or delete
On employees_copy
Beg in
Insert into employees」og(Who,when) Values(user, sysdate);
End;
1 [
[>m?a苗耳 a 遂电!z切 「偌秋
:HE夷 沓河构建爭
Q Create or ret>lace trigger aud i t_ emp 1 eye e_c opy
Before insert- or upefta-te or delete
On emp1oye e s_c opy
Begin
Insert into umpLoyeH呂 log (血o/triwn) Value? (vsei;/ ;
End;
输出z
< h s 0 i任势已呢成「用时o.斶秒
table EHPLOYEES_COPY 已创崖*
tfible EMPLOTEES_LOG-已创逢宀
未迭搔任何行 "
TRIGGER audi c_eini)10¥ee_copy 已漏译
(4).输入如下语句对触发器进行UPDATE触发测试,如图6-4所示:
对employees_copy表做一个update操作,并提交(commit)到数据库:
update employees_copy set salary = salary*1.1;
commit;
⑦起始肉掘I绘.■谑"
AKIJS趣遵 廖③ 遹4S0&1 coca
工作表 查谊构建器
iQidate employees_copy set salary = salaxy^l■丄; cmrvnit ;
i
i
|圍Bt輸出*
N & 日昌同 任务旦宪就^BO.匹砂 tahle euflotees^cofy 已创蚩 f
table EMPL0YEE3_L0G 已创建&
未选择任何行
TRIGG
文档评论(0)