PL SQL學習筆記 觸發器

2022-02-04 15:28:14 字數 1601 閱讀 7616

一:語句級觸發器

語句級觸發器是指當執行dml操作時,以語句為單位執行的觸發器

(注意與下面提到的行級觸發器比較)

先看**

create or replace trigger xland_trigger

before insert

or update

or delete

on labor.xland

begin

if(to_char(sysdate,'day') in ('星期六','星期日'))

or (to_char(sysdate,'hh24') not between 8 and 18) then

end if;

end;

執行以下**測試

insert into labor.xland (xland.title,xland.content,xland.state) values ('123','234',3);
oracle丟擲異常

二:行級觸發器

行級觸發器是指執行dml操作時,以資料行為單位執行的觸發器,每一行都執行一次觸發器

先看**:

create or replace trigger xland_trigger

before insert

on labor.xland

for each row

begin

if :new.title = 'xland' then

insert into labor.xland (xland.title,xland.content,xland.state) values ('123','cha2',3);

end if;

end;

執行以下**測試

insert into labor.xland (xland.title,xland.content,xland.state) values ('xland','cha1',3);
結果:

在行級觸發器中可以對列的值進行訪問(很重要!)

列名前加   :old.    表示變化前的值

列名前加   :new.    表示變化後的值

在when子句中不用冒號。

三:instead of 觸發器(檢視上的觸發器)

先看**

create or replace trigger t_xland

instead of insert

on v_xland

for each row

begin

insert into xland (title,content,state) values ('1','1',1);

end;

其實就是取代了insert語句和其他觸發器沒什麼大區別

四:刪除觸發器

drop trigger t_xland;

PL SQL學習筆記之觸發器

一 觸發器響應的事件 二 建立觸發器 create or replace trigger trigger name of col name on table name referencing old as o new as n 引用儲存舊值的old表 和 新值的 new表 for each row ...

PLSQL 除錯觸發器

在plsql裡是可以除錯觸發器的,相信有一部分人可能不清楚這個。以前我一直使用sql server,哈哈,養成了乙個根深蒂固的觀念,以為oracle裡觸發器也是不能除錯的,其實sqlserver裡面也是可以除錯的 寫這個的時候特意 在網上查詢了下資料 好了,為了形象說明,下面列舉個例子,如下圖所示,...

觸發器學習筆記

觸發器學習 概念 觸發器是一種特殊的儲存過程,mysql5.0以上版本支援觸發器,觸發器是與表有關的命名資料庫物件,當表出現特定事件時,將啟用該物件。觸發器可以處理很多需要程式來完成的工作,這樣做的好處是減輕程式帶來的各種各樣的問題如,效率 bug和維護等。當對某一表進行諸如update inser...