程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle觸發器創建及其功能介紹

Oracle觸發器創建及其功能介紹

編輯:Oracle數據庫基礎

通過學習,我們大家對創建c創建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 (: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 ...... 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved