一:語句級觸發器
語句級觸發器是指當執行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其實就是取代了insert語句和其他觸發器沒什麼大區別instead of insert
on v_xland
for each row
begin
insert into xland (title,content,state) values ('1','1',1);
end;
四:刪除觸發器
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...