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