类型

行级触发器:

  • FOR EACH ROW

    影响的每一行都会执行触发器

语句级出发器

  • 默认的模式,一句话才执行一次触发器

    触发器不能嵌套,不能含有事务控制语句

何时触发

  • Before:条件运行前
  • After:条件运行后
  • Instead of:替代触发,作用在视图上

创建触发器

实例一

1.创建一个与scott下的emp表结构一样的表emp_his,并不添加数据

create table emp_his as select * from employees where 0=1;

这种构造与现存表相同结构的表,是不会将comment带过来的

2.然后在emp表中创建before delete类型的触发器,

当即将删除emp表记录时,将相应记录插入到emp_his中。

create or replace trigger hr.e_delete
before delete on employees
for each row
begin
insert into emp_his values(:old.employee_id,
:old.first_name,:old.last_name,:old.email,
:old.phone_number,:old.hire_date,:old.job_id,
:old.salary,:old.commission_pct,:old.manager_id,
:old.department_id);
end e_delete;

实例二

禁止对表emp的salary进行更改

create or replace trigger e_update
before update of salary on emp
begin
if updating then
raise_application_error(-20001,'工资不能被改动');
end if;
end;

检验

hr@ORCL> update emp
2 set salary=100
3 where employee_id<100;
update emp
*
第 1 行出现错误:
ORA-20001: 工资不能被改动
ORA-06512: 在 "HR.E_UPDATE", line 3
ORA-04088: 触发器 'HR.E_UPDATE' 执行过程中出错 hr@ORCL>

触发器管理

禁用触发器

alter trigger e_delete disable;

禁用某个表上所有的触发器

alter table emp disable all triggers;

查all_trigger表得到触发器名字

select trigger_name,trigger_type,table_owner,table_name from all_triggers;

查看触发器内容

select text from all_source where type='TRIGGER' and name='E_DELETE';

注意,平时在写sql的时候不注意大小写,但是在此处涉及到触发器名字的时候一定要大写

hr@ORCL> select text from all_source where type='TRIGGER' and name='E_DELETE';

TEXT
---------------------------------------------------------------------------------------------------------------------
trigger hr.e_delete
before delete on employees
for each row
begin
insert into emp_his values(:old.employee_id,
:old.first_name,:old.last_name,:old.email,
:old.phone_number,:old.hire_date,:old.job_id,
:old.salary,:old.commission_pct,:old.manager_id,
:old.department_id); end e_delete; 已选择11行。 hr@ORCL>

删除触发器

drop trigger e_delete_1;

oracle触发器的更多相关文章

  1. 2014/11/06 Oracle触发器初步 2014-11-06 09:03 49人阅读 评论(0) 收藏

    触发器我就不多解释了,保证数据的完整性的神器,嗯..也是减少程序员工作托管给数据库操作的好帮手.就不讲一些大道理了.通俗点,我们对数据库的操作,无非就是增 删 改 查. 触发器就是在删,改,增的时候( ...

  2. oracle触发器加条件判断

    oracle触发器加条件判断,如果某个字段,isnode=0,那么不执行下面的方法,数据如下: create or replace trigger tr_basestation_insert_emp ...

  3. [转]连续创建多个Oracle触发器失败,单个创建才成功的解决方法

    连续创建多个Oracle触发器失败,单个创建才成功的解决方法   1.当我连续执行创建多个触发器时,总是报编译通过,但存在警告或错误.如下:   create or replace trigger t ...

  4. Oracle 触发器在日志管理开发中的应用

    摘要: 本文讨论了利用数据库中的触发器对日志管理进行设计与实现的方法, 是对原来在客户端软件中编写日志管理方法的一种改进, 并给出了 Oracle9i 中的实例演示.关键词: Oracle; 触发器; ...

  5. oracle触发器应用

    首先给大家推荐两篇我看后的博文,我已经内容转载过来: 1.对触发器的讲解 本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建 ...

  6. Mybatis 插入操作时获取主键 (Oracle 触发器与SEQ)

    1.通过Oracle序列 -- Create sequence create sequence SEQ_DW_EWSYSTEM minvalue 1 maxvalue 9999999999999999 ...

  7. SQL server与Oracle触发器的创建与使用

    SQL Server 1创建触发器 GO BEGIN IF (object_id('WMY', 'tr') is not null) DROP trigger WMY END; GO CREATE T ...

  8. oracle触发器中增删改查本表

    oracle触发器中增删改查本表 (1)只有before insert触发器中才可以查询或更新本表 create or replace trigger tri_test_ins before inse ...

  9. Oracle触发器用法实例详解

    转自:https://www.jb51.net/article/80804.htm. 本文实例讲述了Oracle触发器用法.分享给大家供大家参考,具体如下: 一.触发器简介 触发器的定义就是说某个条件 ...

  10. Oracle 触发器(二)

    Oracle触发器详解   触发器是许多关系数据库系统都提供的一项技术.在oracle系统里,触发器类似过程和函数,都有声明,执行和异常处理过程的PL/SQL块. 8.1 触发器类型 触发器在数据库里 ...

随机推荐

  1. Android 学习资源

    下面这些资源对Android开发来说是很有帮助的! 最常用的: Android开发官方网站:http://developer.android.com/index.html 这个网站应该是Android ...

  2. ASP.NET MVC5+EF6+EasyUI 后台管理系统(29)-T4模版

    系列目录 本节不再适合本系统,在58,59节已经重构.请超过本节 这讲适合所有的MVC程序 很荣幸,我们的系统有了体验的地址了.演示地址 之前我们发布了一个简单的代码生成器,其原理就是读取数据库的表结 ...

  3. JavaScript - reduce方法,reduceRight方法 (Array)

    JavaScript - reduce方法 (Array) 解释:reduce() 方法接收一个函数作为累加器(accumulator),数组 中的每个值(从左到右)开始合并,最终为一个值. 语法:a ...

  4. webpack配置别名alias出现的错误匹配

    @(webpack) webpack是一款功能强大的前端构建工具,不仅仅是针对js,它也可通过各种loader来构建相关的less,html,image等各种资源,将webpack配合流程制定工具gu ...

  5. Objective-C集合总结

    Objective-C里面的集合主要包括:NSString,NSMutableString,NSArray,NSMutableArray,NSDictionary,NSMutableDictionar ...

  6. Configure bridge on a team interface using NetworkManager in RHEL 7

    SOLUTION IN PROGRESS February 29 2016 KB2181361 environment Red Hat Enterprise Linux 7 Teaming,Bridg ...

  7. Error:Execution failed for task ':app:clean'.

    运行时出现 Error:Execution failed for task ':app:clean'. 错误,Builld->Clean Project即可.

  8. [修正] Firemonkey 中英文混排折行问题(移动平台)

    问题:FMX 在移动平台的文字显示并非由该平台的原生 API 来显示,而是由 FMX.TextLayout.GPU 来处理,也许是官方没留意到中文字符的问题,造成在中英文混排折行时,有些问题. 适用: ...

  9. Oracle同义词

    Oracle的同义词(synonyms)从字面上理解就是别名的意思,和试图的功能类似,就是一种映射关系.本文介绍如何创建同义词语句,删除同义词以及查看同义词语句. Oracle的同义词总结:从字面上理 ...

  10. 你必须知道的Microsoft SQL Server一

    不知道为什么我Win10环境下安装的Sqlserver2012,智能提示的功能基本上没有用,没办法,我还是选择安装插件SQL Prompt 5吧.下载地址:http://www.uzzf.com/so ...