Oracle觸發器建立及其功能

才智咖 人氣:1.56W

下面的文章主要介紹的是如何建立Oracle觸發器,同時介紹了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 (: is null) then

select t1_val into : from dual; //其中的: 指的是t1表中新行的列

end if;

end;

le觸發器功能

觸發器是特定事件出現的時候,自動執行的程式碼塊。類似於儲存過程,觸發器與儲存過程的區別在於:儲存過程是由使用者或應用程式顯式呼叫的,而觸發器是不能被直接呼叫的'。

功能:

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 :0_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 ......