触发器:
分类:
a).DML触发器
b).替代触发器
c).系统触发器
创建DML触发器:
Create or replace trigger Tri_DelEmp
Before delete on scott.emp
For each row
Begin
insert into emp_history(empno,ename,job,sal
,comm,hiredate,mgr,deptno)
values(:old.empno,:old.ename,:old.job,:old.sal,
:old.comm,:old.hiredate,:old.mgr,:old.deptno);
End;
create or replace trigger Tri_sal
before update or insert of sal on emp
referencing old oo new nn
for each row
begin
if :nn.sal>15000 and :nn.job<>'PRESIDENT' and :nn.job<>'MANAGER' then
dbms_output.put_line('not so many');
raise_application_error(-20010,'not so many');(-20000~-20999)
end if;
end;
触发器的限制:
CREATE TRIGGER语句文本的字符长度不能超过32KB
触发器体内的SELECT 语句只能为SELECT … INTO …结构,或者为定义游标所使用的SELECT 语句
触发器中不能使用数据库事务控制语句 COMMIT, ROLLBACK, SVAEPOINT 语句
由触发器所调用的过程或函数也不能使用数据库事务控制语句
触发器中不能使用LONG, LONG RAW 类型
DML触发器中的谓词:
a). inserting 如果触发语句是INSERT,则为TRUE,否则为FALSE
b). updating 如果触发语句是UPDATE,则为TRUE,否则为FALSE
c). deleting 如果触发语句是DELETE,则为TRUE,否则为FALSE
create or replace trigger check_emp
before insert or update or delete on emp
for each row
begin
if inserting then
dbms_output.put_line('insert');
elsif updating then
dbms_output.put_line('update');
elsif deleting then
dbms_output.put_line('delete');
else
dbms_output.put_line('others');
end if;
end;
创建替代触发器:(替代触发器主要用于对复杂视图操作进行处理)
Create or replace trigger emp_view_del
Instead of delete on emp_view
For each row
Begin
delete from emp where deptno=:old.deptno;
End;
创建系统级触发器:
Create or replace trigger event_log_tri
After create or alter or drop on database(建立在整个数据库上,需要用DBA身份,可对所以user检测)
Begin
insert into logevent
values(sysevent,dictionary_obj_type,dictionary_obj_name,
dictionary_obj_owner);
End;
create or replace trigger logon_tri
after logon on schema(建立在方案上,即只对本user检测)
begin
insert into log
values(user,sysdate,'logon');
end;
触发器状态:
Alter trigger logno_tri disable/enable;
Alter table emp disable/enable all triggers;
分享到:
相关推荐
oralce数据库+触发器笔记等资料,资料绝对不错,是培训机构里面的内部笔记,值得拥有
oracle笔记触发器,有具体的触发器代码案例,触发器的知识笔记!
这份"oracle笔记(存储过程函数触发器游标流程控制等)"涵盖了Oracle数据库管理中的关键知识点,包括但不限于以下几个方面: 1. **存储过程与函数**:存储过程是预编译的SQL语句集合,用于执行特定任务。它们可以提高...
其次,笔记可能会深入到Oracle的高级特性,比如PL/SQL编程,这是一种专为Oracle设计的过程化编程语言,用于创建存储过程、函数、触发器等。此外,可能还会涵盖数据库事务处理、并发控制和锁机制,这些都是保证数据...
《MLDN最经典的ORACLE笔记》是李兴华老师倾力打造的一份全面而深入的Oracle学习资源,专为对数据库技术感兴趣的读者精心准备。Oracle作为全球广泛使用的数据库管理系统,其强大功能和复杂性使得深入理解和掌握Oracle...
在达内的Oracle笔记中,可能会详细讲解SELECT语句用于数据检索,INSERT、UPDATE、DELETE用于数据增删改,以及CREATE、ALTER、DROP用于数据库对象管理的语法和用法。 3. **数据库设计**:良好的数据库设计是确保系统...
Oracle触发器是数据库管理系统Oracle中的一个关键特性,用于在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的PL/SQL代码。触发器可以用来强制执行业务规则、实现复杂的数据验证和同步操作,...
本资源“oracle笔记+资料.rar”包含了丰富的Oracle学习资料,适合不同水平的学习者,无论你是初学者还是资深DBA,都能从中受益。下面将详细解析其中可能涵盖的知识点。 1. **Oracle基础知识**:这部分内容可能会...
这份"Oracle笔记详解资料用例"涵盖了Oracle数据库的核心概念、安装配置、SQL语言、表和索引、存储结构、备份恢复、性能优化等多个方面,是学习和掌握Oracle数据库的宝贵资源。 首先,Oracle数据库的基础部分包括...
Oracle笔记中会涵盖如何创建和管理数据库对象,如表、索引、视图、存储过程、触发器等。表是数据的主要存储结构,索引可以提高查询速度,视图可以简化复杂查询,而存储过程和触发器则是实现业务逻辑的重要工具。 五...
【Oracle笔记(基于尚学堂马士兵)】 Oracle是一款全球广泛使用的大型关系型数据库管理系统,由美国Oracle公司开发。本笔记主要基于尚学堂马士兵老师的教学内容,深入浅出地介绍了Oracle的基本概念、安装配置、SQL...
韩顺平Oracle数据库教程笔记涵盖了Oracle数据库的基础知识和高级技术,涵盖了数据类型、查询语句、条件语句、排序语句、分组语句、联结语句、子查询、数据操作、视图、索引、存储过程、触发器、数据库设计、数据库...
《韩顺平最新Oracle笔记及PPT》是针对Oracle数据库技术的一套全面的学习资源,由知名IT讲师韩顺平提供。这些资料包含了2011年韩顺平的最新教学内容,适合对Oracle有兴趣或者需要提升Oracle技能的IT专业人士。 ...
- ORACLE第九天.txt可能讨论到数据库安全性,如用户权限、角色、表权限的管理。 - 其他天数的笔记可能包括存储过程、触发器、索引优化、备份恢复策略等内容。 通过这样的培训,参与者将能够全面掌握Oracle数据库的...
《Oracle经典笔记》是一份深度探讨Oracle数据库管理系统的综合学习资料。这份笔记涵盖了从Oracle PL/SQL编程到SQL查询语言的广泛主题,旨在帮助读者深入理解Oracle数据库的运作机制和应用技巧。 首先,我们来看看...
除了上述重点,笔记可能还包含了Oracle的其他重要概念,如索引、触发器、视图、事务管理、备份恢复策略、性能优化技巧等。索引能显著提升查询速度,但过度使用也可能导致写操作变慢;触发器用于在特定事件发生时自动...
"李兴华Oracle笔记整理" 李兴华Oracle笔记整理是Oracle核心基础知识的总结,涵盖了Oracle的安装、SQLPlus基本命令、scott用户的表结构、增删改查、分页处理、事务处理、DDL、三范式、用户权限管理、数据的备份与...
这个“个人学习Oracle笔记”文件很可能是作者在深入学习Oracle数据库的过程中积累的知识点总结,旨在帮助初学者从基础开始逐步掌握Oracle的核心概念和技术。 Oracle数据库的基础知识包括以下几个主要方面: 1. **...
"ORACLE笔记笔记_ZCY"很可能是某位名为ZCY的学习者在观看浪曦视频教程后整理的Oracle数据库学习笔记。浪曦可能是一个提供IT在线教育的平台,专注于数据库或相关技术的教学。 Oracle数据库系统的核心特性包括: 1. ...
### 韩顺平Oracle视频笔记知识点概览 #### 1. Oracle 用户管理 - **概念**:在Oracle数据库中,用户是用来管理访问权限的基本单位。每个用户都可以有自己的模式(schema),其中包含各种对象如表、视图等。 - **创建...