日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
SqlServer觸發(fā)器使用原理的描述

以下的文章主要向大家講述的是Sql Server觸發(fā)器的使用原理,以及對Sql Server觸發(fā)器的實(shí)際操作功能還有對觸發(fā)器三種實(shí)際操作的具體分析,以下就是文章的主要內(nèi)容的詳細(xì)描述,希望會(huì)給你帶來一些幫助在此方面。

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供洛寧企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為洛寧眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。

Sql Server觸發(fā)器:

1、觸發(fā)器的 '本質(zhì)':

觸發(fā)器是一種特殊的存儲(chǔ)過程,它不能被顯式地調(diào)用,

而是在往表中插入記錄、更改記錄或者刪除記錄時(shí),當(dāng)事件發(fā)生時(shí),才被

自動(dòng)地激活。

2、這樣做帶來的 '功能':

觸發(fā)器可以用來對表實(shí)施復(fù)雜的完整性約束,保持?jǐn)?shù)

據(jù)的一致性,當(dāng)觸發(fā)器所保護(hù)的數(shù)據(jù)發(fā)生改變時(shí),Sql Server觸發(fā)器會(huì)自動(dòng)被激活,

響應(yīng)同時(shí)執(zhí)行一定的操作(對其它相關(guān)表的操作),從而保證對數(shù)據(jù)的不完整

性約束或不正確的修改。

觸發(fā)器可以查詢其它表,同時(shí)也可以執(zhí)行復(fù)雜的T-SQL語句。觸發(fā)器和引

發(fā)觸發(fā)器執(zhí)行的命令被當(dāng)作一次事務(wù)處理,因此就具備了事務(wù)的所有特征。

注意: '事務(wù)具備什么特征?在觸發(fā)器中的作用?'

如果發(fā)現(xiàn)引起觸發(fā)器執(zhí)行的T-SQL語句執(zhí)行了一個(gè)非法操作,比如關(guān)于其它表的

相關(guān)性操作,發(fā)現(xiàn)數(shù)據(jù)丟失或需調(diào)用的數(shù)據(jù)不存在,那么就回滾到該事件執(zhí)行

前的SQL SERVER數(shù)據(jù)庫狀態(tài)。

3、觸發(fā)器的作用:

Sql Server觸發(fā)器可以對數(shù)據(jù)庫進(jìn)行級(jí)聯(lián)修改,這一點(diǎn)剛才已經(jīng)說過了。

需要說明的是: '觸發(fā)器和約束的關(guān)系和區(qū)別'

(1)一般來說,使用約束比使用觸發(fā)器效率更高。

(2)同時(shí),觸發(fā)器可以完成比CHECK約束更復(fù)雜的限制。

說明:

2.1 與CHECK約束不同,在觸發(fā)器中可以引用其它的表。

2.2 觸發(fā)器可以發(fā)現(xiàn)改變前后表中數(shù)據(jù)的不一致,并根據(jù)這些不同來進(jìn)行相應(yīng)

的操作。

2.3 對于一個(gè)表不同的操作(INSERT、UPDATE、DELETE)可以采用不同的觸

發(fā)器,即使是對相同的語句也可以調(diào)用不同的觸發(fā)器來完成不同的操作。

舉例1:在簽訂一份訂單時(shí),貨物的庫存量應(yīng)減少。

問?這應(yīng)用了觸發(fā)器的什么特征?CHECK約束能解決嗎?

舉例2:正在進(jìn)行整理的貨物不能下訂單。

問?這應(yīng)用了觸發(fā)器的什么特征?CHECK約束能解決嗎?

4、對觸發(fā)器3種操作的分析:

在SQL SERVER為每個(gè)Sql Server觸發(fā)器都創(chuàng)建了兩個(gè)專用表:inserted表和deleted表。

這是兩個(gè)邏輯表,由系統(tǒng)來維護(hù),在觸發(fā)執(zhí)行時(shí)存在,在觸發(fā)結(jié)束時(shí)消失。

這樣有什么用途?

帶著問題看,具體操作步驟和過程:

(1)deleted表存放由于執(zhí)行delete或update語句而要從表中刪除的所有行。

在執(zhí)行delete或update操作時(shí),被刪除的行從激活觸發(fā)器的表中被移動(dòng)(move)到deleted

表,這兩個(gè)表不會(huì)有共同的行。

(2)inserted表存放由于執(zhí)行insert或update語句而要向表中插入的所有行。

在執(zhí)行insert或update事物時(shí),新的行同時(shí)添加到激活觸發(fā)器的表中和inserted表中,

inserted表的內(nèi)容是激活觸發(fā)器的表中新行的拷貝。

說明:update事務(wù)可以看作是先執(zhí)行一個(gè)delete操作,再執(zhí)行一個(gè)insert操作,舊的行首先

被移動(dòng)到deleted表,讓后新行同時(shí)添加到激活觸發(fā)器的表中和inserted表中。

11.1.3 instead of 和 after 觸發(fā)器

主要包括定義和應(yīng)用范圍條件,操作執(zhí)行時(shí)機(jī);

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

1、考慮為什么要設(shè)計(jì)出發(fā)器,為解決什么問題而設(shè)計(jì)?

2、應(yīng)制定的內(nèi)容:為什么,大家思考一下?不知道,看下面的例子,全看完!

T-SQL語句創(chuàng)建Sql Server觸發(fā)器

語法結(jié)構(gòu):

create trigger 觸發(fā)器名 on 表或視圖 for|after|instead of --操作時(shí)機(jī) insert,update,delete as sql語句

作業(yè):

(要求:在northwind表中建立2個(gè)表:cust_test和order_test)

cust_test: CustomerID char(5) PK order_test: CustomerID char(5)--對應(yīng)關(guān)系 Custcity Orderid PK Custname OrderNames CStatus int OStatus int --狀態(tài) Cstorage int Orders int --定購量和庫存量 Cdate date Odate date--日期

作業(yè)1:

在cust_test表中建立刪除觸發(fā)器,實(shí)現(xiàn)上述2表的級(jí)聯(lián)刪除。

作業(yè)2:

在order_test表建立insert觸發(fā)器,當(dāng)向order_test表插入一行,如果cust_test表中對應(yīng)

記錄status值為1,說明處于準(zhǔn)備狀態(tài)不能寫入該數(shù)據(jù)。

答案1:

use northwind go create trigger cust_orders_del1 on Cust_test after delete as delete from order_test where CustomerID in (select CustomerID from deleted) go 答案2: use northwind go create trigger cust_orders_ins2 on order_test after insert as if (select cstatus from cust_test,inserted where cust_test.customerid=inserted.customerid)=1 begin print 'The Goods is being processed' rollback transaction end go

以上的相關(guān)內(nèi)容就是對Sql Server觸發(fā)器的介紹,望你能有所收獲。


新聞名稱:SqlServer觸發(fā)器使用原理的描述
文章位置:http://m.5511xx.com/article/cdoodco.html