Oracle觸發器之替代觸發器


替代觸發器
替代視圖增刪改操作。視圖可以認為成邏輯上的一張表,類似於把一個sql語句的執行結果永久的像表存儲到數據
庫中,視圖一般用來做查詢。
創建視圖的語法:
create view 視圖名稱 as sql語句;
--創建視圖 ,存儲部門編號,部門的平均工資,部門總人數,部門員工的最高工資
create view vi_dept as
select d.deptno ,avg(e.sal) avg_sal,count(e.empno) emp_count,max(e.sal) emp_sal
from dept d left join emp e on d.deptno=e.deptno
group by d.deptno
;
--刪除視圖
drop view vi_dept;
使用視圖和使用表一樣,可以從視圖中查詢數據:
select * from vi_dept where deptno=10;
但是,數據庫是不允許從視圖中刪除或者修改數據:
有的時候是有刪除或者修改視圖數據這種需求的,所以可以創建替代觸發器,來執行視圖的刪除操作。
創建替代觸發器語法:
create or replace trigger 觸發器名稱
instead of
delete update insert 觸發操作
on
視圖名稱 注意 替代觸發器只能用到視圖上
when 觸發條件
begin
語句塊;
end;
注意:
--創建視圖 ,存儲部門編號,部門的平均工資,部門總人數,部門員工的最高工資
create view vi_dept as
select d.deptno ,avg(e.sal) avg_sal,count(e.empno) emp_count,max(e.sal) emp_sal
from dept d left join emp e on d.deptno=e.deptno
group by d.deptno
;
--刪除視圖
drop view vi_dept;
select * from vi_dept where deptno=10;1,for each row 替代觸發器 默認就是行級觸發器,所以就不需要加for each row了
2,替代觸發器不需要有after或者before 觸發時機
舉例:寫一個替代觸發器,替代vi_dept的刪除操作

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM