Oracle 触发器语法及实例

Oracle触发器语法(一)

一 Oracle触发器语法

触发器是特定事件出现的时候,自动执行的代码块。类似于存储过程,触发器与存储过程的区别在于:存储过程是由用户或应用程序显式调用的,而触发器是不能被直接调用的。

功能:

1、 允许/限制对表的修改

2、 自动生成派生列,比如自增字段

3、 强制数据一致性

4、 提供审计和日志记录

5、 防止无效的事务处理

6、 启用复杂的业务逻辑

触发器触发时间有两种:after和before。

1、触发器的语法:

CREATE [OR REPLACE] TIGGER触发器名 触发时间 触发事件

ON表名

[FOR EACH ROW]

BEGIN

pl/sql语句

END

其中:

触发器名:触发器对象的名称。

由于触发器是数据库自动执行的,因此该名称只是一个名称,没有实质的用途。

触发时间:指明触发器何时执行,该值可取:

before---表示在数据库动作之前触发器执行;

after---表示在数据库动作之后出发器执行。

触发事件:指明哪些数据库动作会触发此触发器:

insert:数据库插入会触发此触发器;

Oracle触发器语法(二)

update:数据库修改会触发此触发器;

delete:数据库删除会触发此触发器。

表 名:数据库触发器所在的表。

for each row:对表的每一行触发器执行一次。如果没有这一选项,则只对整个表执行一次。

2、举例:

下面的触发器在更新表auths之前触发,目的是不允许在周末修改表:

create triggerauth_secure before insert or update or delete //对整表更新前触发

on auths

begin

if(to_char(sysdate,'DY')='SUN'

RAISE_APPLICATION_ERROR(-20600,'不能在周末修改表auths');

end if;

end

例子:

CREATE OR REPLACE TRIGGER CRM.T_SUB_USERINFO_AUR_NAME AFTER UPDATE OF STAFF_NAME

ON CRM.T_SUB_USERINFO

REFERENCING OLD AS OLD NEW AS NEW

FOR EACH ROW

declare

begin

Oracle触发器语法(三)

二 Oracle触发器详解

开始:

create triggerbiufer_employees_department_id

beforeinsertorupdateofdepart

相关文档:

http://inthirties.com:90/thread-918-3-1.html

This article describes the installation of

Oracle 10g release 2 (10.2.0.1) RAC on Linux (Oracle Enterprise Linux

4.5) using NFS to provide the shared storage.

Introduction

Download Software

Operating System Installation

Oracle Installation Prereq ......

/******************************************************************************/

/*

主流数据库MYSQL/MSSQL/ORACLE测试数据库脚本代码

脚本任务:建立4个表,添加主键,外键,插入数据,建立视图

运行环境1:microsoft sqlserver 2000 查询分析器

运行环境2:mysql5.0 phpMyAdmin网页界面

运行环境3:oracle 9i SQL*P ......

Oracle 视图

视图: 你可以通过创建表的视图来表现数据的逻辑子集或数据的组合.视图是基于表或者另一个

视图的逻辑表,一个视图并不包含它自己的数据,它象一个窗口,通过该窗口可以查看或改变

&nbsp ......

缘起一个表空间太大,删除数据后由于文件尾被用,无法resize,打算把所有表空间上的对象move到一个临时存储的表空间做整理。

move一个表到另外一个表空间时,索引不会跟着一起move,而且会失效。(LOB类型例外)表move,我们分为:

*普通表move

*分区表move

*LONG,LOB大字段类型move来进行测试和说明。

索引的move,我们� ......

oracle分析函数十分强大,我们只要掌握这些方法,更直接的说法就是知道这些分析函数的作用就能完成很多工作。

下边贴出这些函数,及简单应用。

其中我想对lag()和lead()函数坐下说明:lag()本身是延后的意思也就是延后出现某列的数,而lead()有引领、领先的意思也就是提前几行显示某列数据

RANK()

dense_rank() ......

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐