成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

關(guān)系數(shù)據(jù)庫(kù)SQL之可編程性觸發(fā)器

LiangJ / 1936人閱讀

摘要:前言前面關(guān)系數(shù)據(jù)庫(kù)之可編程性函數(shù)用戶自定義函數(shù)一文提到關(guān)系型數(shù)據(jù)庫(kù)提供了可編程性的函數(shù)存儲(chǔ)過(guò)程事務(wù)觸發(fā)器及游標(biāo),前文已介紹了函數(shù)存儲(chǔ)過(guò)程事務(wù),本文來(lái)介紹一下觸發(fā)器的使用。觸發(fā)器是在執(zhí)行之后觸發(fā),而觸發(fā)器是在執(zhí)行之前觸發(fā)。

前言

前面關(guān)系數(shù)據(jù)庫(kù)SQL之可編程性函數(shù)(用戶自定義函數(shù))一文提到關(guān)系型數(shù)據(jù)庫(kù)提供了可編程性的函數(shù)、存儲(chǔ)過(guò)程、事務(wù)、觸發(fā)器及游標(biāo),前文已介紹了函數(shù)、存儲(chǔ)過(guò)程、事務(wù),本文來(lái)介紹一下觸發(fā)器的使用。(還是以前面的銀行系統(tǒng)為例)

概述

觸發(fā)器(TRIGGER)是個(gè)特殊的存儲(chǔ)過(guò)程,它的執(zhí)行不是由程序調(diào)用,也不是手工啟動(dòng),而是由事件來(lái)觸發(fā),比如當(dāng)對(duì)一個(gè)表進(jìn)行操作( INSERT,DELETE, UPDATE)時(shí)就會(huì)激活它執(zhí)行。觸發(fā)器經(jīng)常用于加強(qiáng)數(shù)據(jù)的完整性約束和業(yè)務(wù)規(guī)則等。 觸發(fā)器可以從 DBA_TRIGGERS ,USER_TRIGGERS?數(shù)據(jù)字典中查到。

觸發(fā)器分為兩種:AFTER觸發(fā)器和INSTEAD OF觸發(fā)器。

語(yǔ)法

創(chuàng)建觸發(fā)器

CREATE TRIGGER <觸發(fā)器名稱(chēng)> 
   ON  <表名|視圖名> 
   [AFTER | INSTEAD OF] 
AS 
--SQL語(yǔ)句塊

修改觸發(fā)器

ALERT TRIGGER <觸發(fā)器名稱(chēng)> 
   ON  <表名|視圖名> 
   [AFTER | INSTEAD OF] 
AS 
--SQL語(yǔ)句塊

刪除觸發(fā)器

DROP TRIGGER <觸發(fā)器名稱(chēng)>

說(shuō)明:

AFTER觸發(fā)器主要用于在數(shù)據(jù)表執(zhí)行INSERT,DELETE, UPDATE操作之后,同時(shí)操作其他表。

INSTEAD OF觸發(fā)器會(huì)替代所要執(zhí)行的SQL語(yǔ)句,也就是說(shuō)所要執(zhí)行SQL并不會(huì)真正執(zhí)行,真正執(zhí)行的是觸發(fā)器中定義的操作。

AFTER觸發(fā)器只針對(duì)表操作,INSTEAD OF觸發(fā)器除了操作表還可以作用于視圖,擴(kuò)展視圖可以支持的更新操作。

AFTER觸發(fā)器是在執(zhí)行SQL之后觸發(fā),而INSTEAD OF觸發(fā)器是在執(zhí)行SQL之前觸發(fā)。

一個(gè)表的INSERT,DELETE, UPDATE操作可以有多個(gè)AFTER觸發(fā)器,有至多一個(gè)INSTEAD OF觸發(fā)器。

特殊表

觸發(fā)器有兩個(gè)特殊的表:插入表(instered表)和刪除表(deleted表)

示例

1.AFTER觸發(fā)器示例
在取錢(qián)時(shí),交易信息表里面插入交易信息,同時(shí)要更改賬戶表里面的余額

--創(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í)行刪除操作

本文就介紹到這里。
如有疑問(wèn)請(qǐng)聯(lián)系我。

原文來(lái)自:簡(jiǎn)書(shū)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/17537.html

相關(guān)文章

  • 關(guān)系數(shù)據(jù)庫(kù)SQL編程事務(wù)

    摘要:前言前面關(guān)系數(shù)據(jù)庫(kù)之可編程性函數(shù)用戶自定義函數(shù)一文提到關(guān)系型數(shù)據(jù)庫(kù)提供了可編程性的函數(shù)存儲(chǔ)過(guò)程事務(wù)觸發(fā)器及游標(biāo),前文已介紹了函數(shù)存儲(chǔ)過(guò)程,本文來(lái)介紹一下事務(wù)的使用。在相關(guān)數(shù)據(jù)庫(kù)中,所有規(guī)則都必須應(yīng)用于事務(wù)的修改,以保持所有數(shù)據(jù)的完整性。 前言 前面關(guān)系數(shù)據(jù)庫(kù)SQL之可編程性函數(shù)(用戶自定義函數(shù))一文提到關(guān)系型數(shù)據(jù)庫(kù)提供了可編程性的函數(shù)、存儲(chǔ)過(guò)程、事務(wù)、觸發(fā)器及游標(biāo),前文已介紹了函數(shù)、存...

    skinner 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<