Oracle触发器的使用

触发器是指存放在数据库中,并被隐藏执行的存储过程。在Oracle8i之前,只允许基于表或视图的DML操作(insert,update,delete)建立触发器,在oracle8i之后,不仅支持DML操作,也允许基于系统事件(启动数据库,关闭数据库,登录)和DDL操作建立触发器。

一、触发器简介

触发器是指隐含执行的存储过程,它可以使用PL/SQL,java和C进行开发,当发生特定事件(例如:修改表、建立对象、登录数据库)时,Oracle会自动执行触发器的相应代码。

触发器由触发事件、触发条件和触发操作三部分组成。

1、触发事件

触发事件是指触发器被触发的SQL、数据库事件和用户事件,在oracle8i之前,触发事件只能是DML操作,在oracle8i之后,不仅支持DML事件,而且还增加了其他事件,具体事件如下:

启动和关闭例程

Oracle错误信息

用户登陆和关闭会话

特定表和视图的DML操作

DDL语句

2、触发条件(可选)

触发条件是指使用when子句指定一个boolean表达式,当表达式返回true时,则执行触发器相应代码,如果表达式返回false或unknown,则不会执行触发器相应代码。

3、触发操作

触发操作是指包含SQL语句和其他执行代码的PL/SQL块,不仅可以使用PL/SQL开发,也可以使用java或c语言开发,当触发条件为true时,会自动执行触发操作的相应代码。但是在编写触发器执行代码时,需要注意一下限制:

触发代码大小不能超过32k,如果确实需要使用大量代码建立触发器,应该首先建立存储过程,然后在触发器中使用call语句调用存储过程。

触发器代码只能包括insert、update和delete语句,而不能包括DDL语句(create、drop、alert)和事务控制语句(commit,rollback和savepoint)。

二、建立DML触发器

当建立DML触发器时,需要指定触发时机(before和after)、触发事件(insert、select、update、delete)、表名、触发类型、触发条件以及触发操作。

1、触发时机

触发时机是指触发器的触发时间,当指定before关键字时,表示在执行DML操作之前触发触发器;当指定after关键字时,表示在执行DML操作之后触发触发器。

2、触发事件

触发条件是指被引起触发器执行的DML语句,即insert、update、delete操作。即可以使用单个触发事件,也可以组合多个触发事件。

3、表名

因为DML触发器是针对特定表执行的,所以必须指定DML操作所对应的表名。

4、触发类型

触发类型用于指定当触发事件发生后,需要执行几次触发操作,如果指定

相关文档:

1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):

ORACLE的解析器按照从右到左的顺序处理from子句中的表名,from子句中写在最后的表(基础表 driving table)将被最先处理,在from子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection ......

1.在ORACLE中实现SELECT TOP N

由于ORACLE不支持SELECT TOP语句,所以在ORACLE中经常是用ORDER BY跟ROWNUM的组合来实现SELECT TOP N的查询。

简单地说,实现方法如下所示:

SELECT 列名1...列名n from

(SELECT 列 ......

数据字典dict总是属于Oracle用户sys的。

1、用户:

select username from dba_users;

改口令

alter user spgroup identified by spgtest;

2、表空间:

select * from dba_data_files;

select * from dba_tablespaces;//表空间

select tablespace_name,sum(bytes), sum ......

Oracle 分区表

Oracle提供了分区技术以支持VLDB(Very Large DataBase)。分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中。分区完全对应用透明。

Oracle的分区表可以包括多个分区,每个分区都是一个独立的段(SEGMENT),可以存放到不同的表空间中。查询时可以通过查询表来访问各个分区中的数据� ......

Oracle中临时表产生过量Redo的说明

最近,在Oracle9i中你用过临时表吗?

它是否给你带来了性能提高?你注意过么?

--------------------------------------------------------------------------------

好了言归正传.

我们知道临时表在DML操作中可以减少redo的生成,从而在保存中间结果集时可以带来较大的性能提高.

可是,� ......

oracle怎么使用触发器,Oracle触发器的使用相关推荐

  1. oracle数据库登录失败触发器,oracle数据库登录、DDL触发器的应用

    登录触发器 oracle登录记录触发器: 1.创建日志记录表: CREATE TABLE SYSTEM.LOGIN_LOG ( SESSION_ID NUMBER, LOGIN_ON_TIME DAT ...

  2. oracle行级的触发器,Oracle触发器Trigger2行级

    create table trigger_t2( id int, name varchar(30), age int ); /* --创建一个before update的触发器-控制每一行,行级 -- ...

  3. ORACLE查出表所有的触发器及触发器详细信息

    ORACLE查出表所有的触发器及触发器详细信息 一.查all_triggers表得到trigger_name Sql代码 select trigger_name from all_triggers w ...

  4. Oracle触发器3-DDL触发器

    DDL触发器,当执行DDL语句时会被触发.按照作用范围,分为schema triggers,database triggers.schema triggers作用在一个用户上,database tri ...

  5. oracle更新前触发器,Oracle之前更新触发器

    本Oracle教程解释了如何在Oracle中创建Before Update触发器的语法和示例. Before Update触发器表示Oracle将在执行更新操作之前触发此触发器. 语法 在Oracle ...

  6. oracle触发器函数,oracle 存储过程、函数和触发器用法实例详解

    本文实例讲述了oracle 存储过程.函数和触发器用法.分享给大家供大家参考,具体如下: 一.存储过程和存储函数 指存储在数据库中供所有用户程序调用的子程序叫存储过程.存储函数. 创建存储过程 用CR ...

  7. oracle建个触发器,oracle数据库如何创建触发器实例

    Oracle DBA Studio 工具里面就能创建触发器 CREATE TRIGGER 名称 CREATE TRIGGER - 创建一个新触发器 语法 CREATE TRIGGER name { B ...

  8. oracle如何添加触发器,Oracle之前插入触发器

    本Oracle教程解释了如何在Oracle中创建BEFORE INSERT触发器的语法和示例. BEFORE INSERT触发器意味着Oracle将在执行INSERT操作之前触发此触发器. 语法 在O ...

  9. Oracle/Kingbase中用序列和触发器实现ID自增

    在设计数据库的时候,Oracle中没有类似SQL Server中系统自动分配ID作为主键的功能,这时Oracle可以通过"序列"和"触发器"来实现ID自动增加的 ...

最新文章

  1. 整合quickx到普通cocos2dx
  2. Cell | 分子胶水的兴起
  3. 在此服务器找不到请求的url,在此服务器上找不到请求的URL /.阿帕奇
  4. 本质矩阵与基本矩阵(对极几何)
  5. leetcode majority number
  6. Ubuntu 安装开源微信(源码安装+release快速安装)
  7. pythonprint中文教程_python中使用print输出中文的方法
  8. Android小項目之---ListView实现论坛管理效果(附源碼)
  9. python创建员工_python作业员工信息表程序(第四周)
  10. 第一讲(3)osgearth编译
  11. MSDN MTBETA
  12. LTE通讯相关2:频带、信道带宽和频点号EARFCN
  13. javaWeb毕业设计项目完整源码附带论文合集免费下载
  14. vue项目电商后台管理系统(一)
  15. 计算机管理里面和打印机相关的,打印机设备
  16. 扫码枪 - 优惠卷核销
  17. Unity Shader 之 环境光
  18. onos中引入外部依赖
  19. 使用vi编辑器创建文本文件
  20. Excel从身份证提取出生年月的几种方法

热门文章

  1. 克拉申的第二语言习得理论
  2. Mybatis莫名报错或Mapper.xml配置后爆红或显示The error may exist in com/jdsydwr/dao/UserMapper.java找不到Mapper接口的修改方法
  3. 《机房收费系统》软件需求说明书
  4. 20162326 齐力锋 2016-2017-2《程序设计与数据结构》课程总结
  5. MongoDB 概念解析
  6. 拒绝成为比尔·盖茨的“万维网之父”,又要干大事!
  7. 2022年讲究高效办公,快来看看这些让你提高效率的软件
  8. mac外接显示器 字体发虚解决方案
  9. centos rpm安装mysql时依赖检测失败:mysql57-community-release 与 mysql80-community-release-el8-3.noarch 冲突
  10. webots自学笔记(九)弹簧与阻尼添加