替代觸發器和系統觸發器

2021-08-16 11:06:58 字數 1278 閱讀 6677

為什麼使用instead of觸發器?

在簡單的檢視上往往可以執行insert update delete操作的,但在複雜檢視上是有限制的,比如有分組 集合運算子的,這時就需要建立替代觸發器

instead of是只適用於檢視上的一種觸發器,不能指定before和after選項,

create

orreplace

trigger instead_of_trigger

instead of

insert

on emp_dept

foreach

rowdeclare

v_temp int;

begin

select

count(*) into v_temp from dept where deptno=:new.deptno;

if v_temp=0 then

insert

into dept(deptno,dname) values(:new.deptno,:new.dname);

endif;

select

count(*) into v_temp from emp where empno:=new.empno;

if v_temp=0 then

insert

into emp(empno,ename,deptno) values(:new.empno,:new.ename,:new.deptno);

endif;

end;

系統觸發器

系統觸發器是由特定系統事件所觸發的觸發器,是指與例程或方案相關的資料庫事件,它包括startup、shutdown、db_role_change和servererror的四種事件。

startup事件觸發器是在啟動資料庫後觸發

shutdown事件觸發器是在關閉資料之前觸發

db_role_change事件觸發器在改變角色後第一次開啟資料庫時觸發

servererror事件觸發器在發生oracle錯誤時觸發

create

orreplace

trigger startup_trigger

after startup on

database

begin

insert

into event_table values(ora_sysevent,sysdate);

end

觸發器 mysql觸發器

觸發器是一種特殊的儲存過程,它在插入 刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。和儲存過程一樣,很少使用。1 觸發器的作用 2 建立觸發器 建立測試環境 mysql create database test db query ok,1 row aff...

mysql系統觸發器 mysql觸發器

觸發器可以讓你在執行insert update delete的時候,執行一些特定的操作,可以在mysql中指定是咋sql語句之前還是之後。觸發器本身沒有返回值,不過他們可以讀取或者更改處罰sql語句所影響的資料。所以,可以使用觸發器實現一些強制限制,或者某些業務邏輯,否則,就需要再應用城西中實現這些...

觸發器六 系統觸發器 學習筆記

系統觸發器用於監視資料庫服務的開啟 關閉 錯誤等資訊的取得,或者是監控使用者的行為操作等。如果要建立系統觸發器,可以使用如下的語法 create or replace trigger 觸發器名稱 before after 資料庫事件 on database schema when 觸發條件 decl...