- 相關推薦
Oracle觸發(fā)器創(chuàng)建及其功能
下面的文章主要介紹的是如何創(chuàng)建Oracle觸發(fā)器,同時介紹了Oracle觸發(fā)器的功能、語法,而且通過具體的例子可以讓大家更深入的掌握。
1.創(chuàng)建表t1 :create table t1 (id number,name nvarchar(8));
2.創(chuàng)建Oracle序列 :CREATE SEQUENCE t1_id INCREMENT BY 1 START WITH 1 MAXVALUE
3.創(chuàng)建Oracle觸發(fā)器 :
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觸發(fā)器功能
觸發(fā)器是特定事件出現(xiàn)的時候,自動執(zhí)行的代碼塊。類似于存儲過程,觸發(fā)器與存儲過程的區(qū)別在于:存儲過程是由用戶或應用程序顯式調(diào)用的,而觸發(fā)器是不能被直接調(diào)用的。
功能:
1)允許/限制對表的修改
2)自動生成派生列,比如自增字段
3)強制數(shù)據(jù)一致性
4)提供審計和日志記錄
5)防止無效的事務處理
6)啟用復雜的業(yè)務邏輯
5.觸發(fā)器觸發(fā)使用有兩種:after和before。
Oracle觸發(fā)器的語法:
CREATE [OR REPLACE] TIGGER觸發(fā)器名 觸發(fā)時間 觸發(fā)事件
ON表名
[FOR EACH ROW]
BEGIN
pl/sql語句
END
1)觸發(fā)器名:觸發(fā)器對象的名稱。由于觸發(fā)器是數(shù)據(jù)庫自動執(zhí)行的,因此該名稱只是一個名稱,沒有實質(zhì)的用途。
2)觸發(fā)時間:指明觸發(fā)器何時執(zhí)行,該值可。
before---表示在數(shù)據(jù)庫動作之前觸發(fā)器執(zhí)行;
after---表示在數(shù)據(jù)庫動作之后出發(fā)器執(zhí)行。
3)觸發(fā)事件:指明哪些數(shù)據(jù)庫動作會觸發(fā)此觸發(fā)器:
insert:數(shù)據(jù)庫插入會觸發(fā)此觸發(fā)器;
舉例說明:讓Oracle實現(xiàn)自增字段
步驟:先建序列,然后建立一個Oracle觸發(fā)器實現(xiàn)!
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 不要創(chuàng)建序列的表,多個表則以“,”隔開**/
CREATE OR REPLACE PROCEDURE PROC_CREATE_SEQ_TRIG(STNAME IN VARCHAR2)
AS
STRSQL VARCHAR2(4000);
TABLENAME VARCHAR2(50);
PID VARC ......
【Oracle觸發(fā)器創(chuàng)建及其功能】相關文章:
Oracle認證:ORACLE綁定變量BINDPEEKING08-25
2016年Oracle DBA創(chuàng)建數(shù)據(jù)庫練習題及答案08-10
Oracle認證:Oracle內(nèi)存結構研究-PGA篇09-22
Oracle發(fā)展歷程09-12
Oracle最新認證07-13
Oracle認證作用07-31
Oracle認證簡介07-22
Oracle認證考試07-31