Oracle触发器创建及其功能

发布时间:2016-12-27 00:00:00 编辑:嘉辉 手机版

  下面的文章主要介绍的是如何创建Oracle触发器,同时介绍了Oracle触发器的功能、语法,而且通过具体的例子可以让大家更深入的掌握。

  1.创建表t1 :create table t1 (id number,name nvarchar(8));

  2.创建Oracle序列 :CREATE SEQUENCE t1_id INCREMENT BY 1 START WITH 1 MAXVALUE

  3.创建Oracle触发器 :

  CREATE TRIGGER tig_insert_t1

  BEFORE INSERT ON "YINZQ"."T1"

  begin

  if (:new.id is null) then

  select t1_id.nextval into :new.id from dual; //其中的:new.id 指的是t1表中新行的列

  end if;

  end;

  4.Oracle触发器功能

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

  功能:

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

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

  3)强制数据一致性

  4)提供审计和日志记录

  5)防止无效的事务处理

  6)启用复杂的业务逻辑

  5.触发器触发使用有两种:after和before。

  Oracle触发器的语法:

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

  ON表名

  [FOR EACH ROW]

  BEGIN

  pl/sql语句

  END

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

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

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

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

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

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

  举例说明:让Oracle实现自增字段

  步骤:先建序列,然后建立一个Oracle触发器实现!

  cata0是表名,cata0_id是需要自增的字段!

  CREATE SEQUENCE SEQ_cata0

  INCREMENT BY 1

  START WITH 1

  MAXVALUE 9999999

  CREATE TRIGGER TRG_cata0 BEFORE

  INSERT ON cata0

  FOR EACH ROW begin

  INTO :NEW.cata0_ID

  from DUAL;

  End TRG_cata0;

  /****@PARAM STNAME 不要创建序列的表,多个表则以“,”隔开**/

  CREATE OR REPLACE PROCEDURE PROC_CREATE_SEQ_TRIG(STNAME IN VARCHAR2)

  AS

  STRSQL VARCHAR2(4000);

  TABLENAME VARCHAR2(50);

  PID VARC ......

本文已影响866
+1
0