摘要:前言前面關(guān)系數(shù)據(jù)庫之可編程性函數(shù)用戶自定義函數(shù)一文提到關(guān)系型數(shù)據(jù)庫提供了可編程性的函數(shù)存儲過程事務(wù)觸發(fā)器及游標(biāo),前文已介紹了函數(shù)存儲過程事務(wù),本文來介紹一下觸發(fā)器的使用。觸發(fā)器是在執(zhí)行之后觸發(fā),而觸發(fā)器是在執(zhí)行之前觸發(fā)。
前言
前面關(guān)系數(shù)據(jù)庫SQL之可編程性函數(shù)(用戶自定義函數(shù))一文提到關(guān)系型數(shù)據(jù)庫提供了可編程性的函數(shù)、存儲過程、事務(wù)、觸發(fā)器及游標(biāo),前文已介紹了函數(shù)、存儲過程、事務(wù),本文來介紹一下觸發(fā)器的使用。(還是以前面的銀行系統(tǒng)為例)
概述觸發(fā)器(TRIGGER)是個特殊的存儲過程,它的執(zhí)行不是由程序調(diào)用,也不是手工啟動,而是由事件來觸發(fā),比如當(dāng)對一個表進行操作( INSERT,DELETE, UPDATE)時就會激活它執(zhí)行。觸發(fā)器經(jīng)常用于加強數(shù)據(jù)的完整性約束和業(yè)務(wù)規(guī)則等。 觸發(fā)器可以從 DBA_TRIGGERS ,USER_TRIGGERS?數(shù)據(jù)字典中查到。
觸發(fā)器分為兩種:AFTER觸發(fā)器和INSTEAD OF觸發(fā)器。
語法創(chuàng)建觸發(fā)器
CREATE TRIGGER <觸發(fā)器名稱> ON <表名|視圖名> [AFTER | INSTEAD OF]AS --SQL語句塊
修改觸發(fā)器
ALERT TRIGGER <觸發(fā)器名稱> ON <表名|視圖名> [AFTER | INSTEAD OF]AS --SQL語句塊
刪除觸發(fā)器
DROP TRIGGER <觸發(fā)器名稱>
說明:
AFTER觸發(fā)器主要用于在數(shù)據(jù)表執(zhí)行INSERT,DELETE, UPDATE操作之后,同時操作其他表。
INSTEAD OF觸發(fā)器會替代所要執(zhí)行的SQL語句,也就是說所要執(zhí)行SQL并不會真正執(zhí)行,真正執(zhí)行的是觸發(fā)器中定義的操作。
AFTER觸發(fā)器只針對表操作,INSTEAD OF觸發(fā)器除了操作表還可以作用于視圖,擴展視圖可以支持的更新操作。
AFTER觸發(fā)器是在執(zhí)行SQL之后觸發(fā),而INSTEAD OF觸發(fā)器是在執(zhí)行SQL之前觸發(fā)。
一個表的INSERT,DELETE, UPDATE操作可以有多個AFTER觸發(fā)器,有至多一個INSTEAD OF觸發(fā)器。
特殊表觸發(fā)器有兩個特殊的表:插入表(instered表)和刪除表(deleted表)
示例1.AFTER觸發(fā)器示例
在取錢時,交易信息表里面插入交易信息,同時要更改賬戶表里面的余額
--創(chuàng)建觸發(fā)器 CREATE TRIGGER Trigger_getMoney ON TransInfo AFTER INSERT AS declare @cardId varchar(19) declare @tranMoney money select @cardId = CardID , @tranMoney = TransMoney from instered; update CardInfo set LeftMoney = LeftMoney - @tranMoney where CardID = @cardId GO --執(zhí)行插入操作 insert into TransInfo values("1324 3626 7532 1935","取款",500,default);
2.INSTEAD OF觸發(fā)器
指定的賬戶"422322001550135015"不可以刪除
--創(chuàng)建觸發(fā)器 CREATE TRIGGER Trigger_deleteAccount ON AccountInfo INSTEAD OF DELETE AS delete from AccountInfo where CardID != "422322001550135015" AND CardID=(select?CardID from?deleted) --執(zhí)行刪除操作
本文就介紹到這里。
如有疑問請聯(lián)系我。
原文來自:簡書
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/17537.html
摘要:前言前面關(guān)系數(shù)據(jù)庫之可編程性函數(shù)用戶自定義函數(shù)一文提到關(guān)系型數(shù)據(jù)庫提供了可編程性的函數(shù)存儲過程事務(wù)觸發(fā)器及游標(biāo),前文已介紹了函數(shù)存儲過程,本文來介紹一下事務(wù)的使用。在相關(guān)數(shù)據(jù)庫中,所有規(guī)則都必須應(yīng)用于事務(wù)的修改,以保持所有數(shù)據(jù)的完整性。 前言 前面關(guān)系數(shù)據(jù)庫SQL之可編程性函數(shù)(用戶自定義函數(shù))一文提到關(guān)系型數(shù)據(jù)庫提供了可編程性的函數(shù)、存儲過程、事務(wù)、觸發(fā)器及游標(biāo),前文已介紹了函數(shù)、存...
閱讀 4152·2023-04-26 02:40
閱讀 2655·2023-04-26 02:31
閱讀 2746·2021-11-15 18:08
閱讀 568·2021-11-12 10:36
閱讀 1425·2021-09-30 09:57
閱讀 5192·2021-09-22 15:31
閱讀 2626·2019-08-30 14:17
閱讀 1269·2019-08-30 12:58