- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
---
您可能关注的文档
最近下载
- 2025至2030年中国机器人关节模组行业市场竞争态势及前景战略研判报告.docx
- 员工冲突管理培训.pptx VIP
- 新课标人教版 宾语从句 复习课件.ppt VIP
- 厂务系统介绍.ppt VIP
- 2024年10月广东省高等教育自学考试00020高等数学(一)试卷及答案.pdf
- 英语人教版八年级下册unit5 setionB 课件.ppt VIP
- 人教版新目标八年级上册英语导学案(全册).pdf VIP
- 人教版九年级英语Unit 2 reading-The Spirit of Christmas.pptx VIP
- 丹毒中医护理方案ppt课件.pptx VIP
- 人教版九年级英语unit8全单元课件.ppt VIP
文档评论(0)