oracle資料庫觸發器

2021-08-01 05:40:10 字數 2083 閱讀 8126

instead of觸發器介紹

instead of觸發器代替觸發動作,並在處理約束之前激發(對於每個觸發操作,每個表或檢視都只能有乙個instead of觸發器。而乙個表對於每個觸發操作可以有多個after觸發器)

instead of觸發器的建立模板:

create or replace trigger 觸發器名

instead of 觸發事件 on 表名|檢視名

pl/sql 程式體

instead of觸發器的主要優點:

可以使不能更新的檢視支援更新。(疑問:通過以下的實驗結果得出普通檢視不是也可以更新麼?)

以下是關於instead of觸發器的乙個**示例:

/*準備工作

//先建立乙個主表stu2

create table stu2

(name varchar(10) primary key,

phone number(10)

);//再建立乙個從表stu3

create table stu3

(id number(10) primary key,

name2 varchar(10) references stu2(name),

xuehao number(10)

);//向stu2中插入一行資料

insert into stu2

values('佟麗婭',1);

//向stu3中插入一行資料

insert into stu3

values(1.'佟麗婭',1);

//建立乙個檢視

create view weiview

as select stu2.name,stu2.phone,stu3.xuehao,stu3.id from stu2,stu3

where stu2.name=stu3.name2;

*//*接下來是建立乙個instead of觸發器

create or replace trigger myinsteadoftrigger

instead of update on weiview

begin

update stu2 set name=:new.name,phone=:new.phone

where name=:old.name;

update stu3 set name2=:new.name,xuehao=:new.xuehao,id=:new.id

where id=:old.id;

end;

/*/

以上就是乙個簡單的instead of觸發器

它的功能就是:當對檢視weiview做更新操作時,相應的表也將隨之更新。那麼問題來了,如果不建立instead of觸發器,那麼資料庫檢視支援更新操作麼(增刪改)?如果支援更新,那麼檢視更新後,相應的表會更新麼?(接下來就做乙個簡單的實驗來解答:還是沿用上面的兩個表:stu2和stu3,只不過在新建乙個檢視,且這次不再給檢視加任何觸發器,以下是實驗**)

/*問題:oracle資料庫中檢視支援update操作麼(是否檢視僅僅用來檢視?)

//建立乙個檢視weiview1

create

view

weiview1

asselect

stu2.name,stu3.id

from

stu2,stu3

where

stu2.name=stu3.name2;

//嘗試對檢視(兩個表所連線起來的檢視)進行update操作

update

weiview1

setid=2

where

name='迪麗熱巴';

//注:執行結果是表stu3的id被改變,變成了2(我並沒有設定instead

of 觸發

器)!!

!!可見oracle資料庫的檢視支援更行操作,並且與檢視相關聯的(即試圖從那些表中查詢資料)表也將隨之更新。

Oracle資料庫update觸發器

在專案中使用到oracle資料庫的update觸發器,先記錄下來方便以後查閱。預備知識和格式以後再編輯吧,先把內容貼出來。create or replace trigger demo trigger after update on tb goods referencing new as new ol...

Oracle資料庫觸發器例項

需求 在修改表qdyth.jzfpjcxx時,要實時記錄表中的資料變動情況 協商後結果 建立新錶記錄資料變動情況 實現手段 資料庫觸發器 建立或修改觸發器 tr jzfpjcxx 2 create or replace trigger tr jzfpjcxx 2 觸發條件 before delete...

Oracle資料庫 4 觸發器

資料庫觸發器時儲存於資料庫的命令 pl sql 語句塊,當觸發器發生時它們會隱含執行。執行觸發器的活動被稱為觸發觸發器。觸發事件的中類 處理資料庫表的 dml 語句 insert update,delete ddl 語句 如 create alter 系統事件 如資料庫啟動或關閉。使用者事件,如登入...