触发器讲解(未打印).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
触发器讲解(未打印)

触发器: 1,提出问题: 当用户登陆的时候,自动记录该用户的名字,时间和IP。 当用户在星期天对某张表进行删除操作的时候,我们提示不能这样做 当用户删除某条记录的时候,自动将记录保存到另外一张表去 2,解决之道————触发器 触发器是指存放在数据库中,被隐含执行的存储过程,可以支持dml触发器,还支持基于系统时间(启动数据库,关闭数据库,登陆)和ddl操作建立触发器。 3,触发器的分类: ddl(create table , create view , drop ......)触发器 dml(insert, delete, update)触发器 系统触发器(与系统相关的触发器,比如用户登陆,退出,启动数据库,关闭数据库) 4,触发器快速入门: 在某张表上添加一条数据,提示“添加了一条记录” A:创建一张表 Create table my_emp(id number; nane varchar2(32)); B:创建一个触发器: create or replace trigger tril after insert on scott.my_emp begin dbms_output.put_lind(‘添加一条’); end; 案例2:在某张表修改多条数据的时候,提示多次“修改了数据” ====》这里讲解行级触发器和语句级触发器 A:创建一张表 Create table my_emp(id number; nane varchar2(32)); B:创建一个触发器: create or replace trigger tril2 after update on scott.my_emp for each row---表示这是一个行级触发器 begin dbms_output.put_lind(‘修改一条’); end; 案例3:为了禁止工作人员在休息日改变员工信息,开发人员可以建立before语句触发器,从而实现数据安全 create or replace trigger tril3 before delete on scott.my_emp Begin if to_char(sysdate, ‘day’) in (‘星期日’,‘星期六’) then dbms_output.put_lind(‘休息期不能删除员工’); raise_application_error(100, ‘休息期不能删除员工’);//下面截图讲解 end if; end; 此截图是对上面raise_application_error(100, ‘休息期不能删除员工’);的讲解。 5,使用条件谓词: 当触发器中同时包含多个触发时机(insert update delete)时,为了在触发器代码中区分具体的触发事件,可以使用三个条件:inserting updating deleting 案例入门: 为了禁止工作人员在休息日改变员工信息,开发人员可以建立before语句触发器,从而实现数据安全,在给出提示时,明确提示用户是进行的insert ,update还是delete操作 create or replace trigger tril3 before delete or update or delete on scott.my_emp begin case when inserting then dbms_output.put_lind(‘请不要添加’); raise_application_error(100, ‘请不要添加’); when updating then dbms_output.put_line(‘请不要修改’); raise_application_error(101, ‘请不要修改’); when deleting then dbms_output.put_line(‘请不要删除’); raise_application_error(102, ‘请不要删除’); end case; end; 6,使用:old和:new 案例:1,在修改emp表雇员的薪水时,显示雇员工资修改前和修改后的值2,如确保在修改员工工资不能低于原有工资 案例2: 编写一个触发器,保证当用户在删除一张emp表记录的时候,自动把删除的记录备份到另外一张表emp_bak中。 A :建立一张备份表 create table mep_bak(id number; name varchar2(2000)); B:建立触发器 create or replace trigger tri4 before delete on Scott。emp for each row begin ---

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档