前段时间公司用到[/size]Oracle触发器,使数据库中两张表数据同步。由于自己没有接触过Oracle触发器,在网上找了些资料,闲来无事,对Oracle触发器知识做一个简单的梳理。
触发器是特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用户不能直接调用他们。
下面看一个触发器的简单例子:
create trigger biufer_employees_department_id
before insert
or delete
or update of department_id
on employees
referencing old as old_value
new as new_value
for each row
when (new_value.department_id<>80 )
begin
:new_value.commission_pct :=0;
end;
触发器的组成部分:
1、 触发器名称
2、 触发语句
3、 触发器限制
4、 触发操作
一、 触发器名称
create trigger biufer_employees_department_id
命名习惯:
biufer(before insert update for each row)
或 buid(befer insert update delete)
employees 表名
department_id 列名
二、 触发语句
比如: 表或视图上的DML语句或DDL语句
数据库关闭或启动,startup shutdown 等等
before insert
or delete
or update of department_id
on employees
referencing old as old_value
new as new_value
for each row
说明:
a、对employees表进行insert的时候
b、对employees表的department_id列进行update的时候
c、对employees表进行delete的时候
d、其中的new_value是代表更新之后的值。
三、 触发器限制
when (new_value.department_id<>80 )
限制不是必须的。此例表示如果列department_id不等于80的时候,触发器就会执行。
四、 触发操作
触发操作是触发器的主体
begin
:new_value.commission_pct :=0;
end;
主体很简单,就是将更新后的commission_pct列置为0。
主体可为任意的pl/sql_block
[试验1]
1、 简历试验表:
create table Eic_mend_copy as select *from Eic_mend;
2、 建立日志表
create table employees_log( user_name varchar2(30), time date);
3、 建立触发器:
Create or replace trigger biud_Eic_mend_copy
after insert or update or delete
on Eic_Mend_copy
Begin
Insert into Eic_mend_log(user_name,time)
values( user, sysdate);
end;
4、 测试数据
insert into Eic_Mend_copy(mendid,mendname) values(110,'武警');
[试验2]
1、 修改日志表
alter table Eic_mend_log add (action varchar2(20));
2、 修改触发器,以便记录用户操作语句类型。
create or replace trigger biud_eic_mend
after insert or update or delete
on eic_mend_copy
declare
l_action eic_mend_log.useraction%type;
Begin
if inserting then
l_action:='Insert';
elsif updating then
l_action:='Update';
elsif deleting then
l_action:='Delete';
else raise_application_error(-20001,'You should never ever get this error.');
end if;
insert into eic_mend_log(name,time,useraction)
values( user,sysdate, l_action);
End;
3、 测试
insert into Eic_mend_copy( mendid, mendname, sex)
values(12345,'laoli','男');
update Eic_mend_copy set mendname='pretty' where mendid=12345;
delete from eic_mend_copy where mendid=110;
4、 测试结果:
select * from Eic_mend_log;
YJZX 03-11月-08 Insert
YJZX 03-11月-08 Update
YJZX 03-11月-08 Delete
分享到:
相关推荐
Oracle数据库触发器是数据库管理系统中的一种重要特性,它允许开发者在特定的数据操作(如INSERT、UPDATE、DELETE)之前或之后执行自定义的SQL代码或PL/SQL块。这些代码可以用来实现业务规则、数据验证、审计跟踪等...
### 小结 通过以上内容的介绍,我们可以看到Oracle数据库机制涉及到了多个方面,包括重做日志的管理和利用、归档模式的选择、实例恢复机制以及权限与角色的管理等。这些机制共同作用,确保了Oracle数据库的高度可靠...
最后,课程小结回顾了整个设计过程,强调了实践中学习到的知识点和经验,为学生提供了宝贵的实践经验。 综上所述,这份Oracle数据库课程设计报告全面覆盖了数据库设计的各个环节,结合实际案例——学生成绩管理系统...
### 小结 Oracle触发器是数据库开发和管理中的重要工具,它们能够自动化执行任务,简化数据库维护工作,提高数据一致性。熟练掌握触发器的使用不仅能够提升数据库应用的性能,还能增强系统的安全性和可靠性。然而,...
**8.8 本章小结** 本章介绍了Oracle数据库中存储过程和触发器的使用,强调了它们在数据库管理和应用程序开发中的重要性。通过学习这些概念,开发者能够创建更加灵活和高效的数据库解决方案,同时提高系统的安全性和...
Oracle触发器是数据库对象,主要用于在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的PL/SQL代码。它们是数据库级别的触发,可以用来实施业务规则、保持数据完整性或进行复杂的逻辑处理。以下...
#### 小结 通过上述步骤,您可以成功地设置Oracle数据库的定时备份。这种备份方式不仅操作简单,而且能够有效地保障数据的安全性。此外,根据实际需求,您还可以进一步优化备份策略,例如增加增量备份、压缩备份...
- 完成报告:报告需符合指定格式,包括引言、概要设计、详细设计、调试与运行结果及课程设计小结,且正文不少于4000字。 3. 设计环境 - 操作系统:Windows7 旗舰版 32 位 - 开发工具:Microsoft Visual Studio 2005...
2.2.4 数据库触发器 2.2.5 可扩充性 2.2.6 继承 2.2.7 多态 2.2.8 面向对象技术小结 2.3 Oracle8一瞥 2.3.1 Oracle8的聚焦区 2.3.2 Oracle8备份和恢复 2.4 Oracle8的对象和新数据库对象 2.4.1 嵌套对象 2.4.2 可变数...
2.2.4 数据库触发器 2.2.5 可扩充性 2.2.6 继承 2.2.7 多态 2.2.8 面向对象技术小结 2.3 Oracle8一瞥 2.3.1 Oracle8的聚焦区 2.3.2 Oracle8备份和恢复 2.4 Oracle8的对象和新数据库对象 2.4.1 嵌套对象 2.4.2 可变数...
1. **《韩顺平.oracle实用教程.pdf》**:这可能是一份全面的Oracle教程,包含Oracle数据库的基本概念、数据类型、SQL语言、表的创建与管理、索引、视图、存储过程、触发器等实用内容,帮助初学者快速入门。...
#### 小结 通过本课程的学习,学员不仅能掌握Oracle数据库的基本操作和管理技能,还能深入了解其高级特性,为将来从事相关领域的工作打下坚实的基础。Oracle数据库因其强大的功能和广泛的应用场景,在IT行业中占据...
在Oracle数据库中,序列是一种自动产生数值的对象,常用于为主键字段提供唯一值。序列主要用于实现表中的自增ID功能,例如,当用户需要为某张表的主键设置自增长时,就可以通过创建一个序列来实现这一需求。 ##### ...
Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统,其强大的功能和灵活性使其成为企业级数据存储和管理的核心工具。在Oracle课程学习中,我们主要关注了几个关键概念:DUAL表、NULL值处理以及函数的使用。...
1.4 小结22 1.5 习题23 第2章 客户端接口25 2.1 SQL*Plus 26 2.1.1 与SQL*Plus连接和 断开连接 26 2.1.2 在SQL*Plus环境下 工作 30 2.1.3 在SQL*Plus中编写 SQL语句34 2.1.4 用SQL*Plus保存 SQL语句36 2.1.5 用SQL*...
Oracle数据库系统是数据库领域最优秀的数据库之一,《Oracle11g从入门到精通》以Oracle最新版本Oracle 11g为蓝本,系统地讲述了Oracle数据库的概念、管理和应用开发等内容。 全书结构合理、内容翔实、示例丰富...