新聞中心
SQL Server管理觸發(fā)器是怎樣管理的呢?這是不少人都問(wèn)過(guò)的問(wèn)題,下面就為您詳細(xì)介紹SQL Server管理觸發(fā)器,希望可以讓您對(duì)SQL Server管理觸發(fā)器有更深的認(rèn)識(shí)。

成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)萬(wàn)安,十多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專(zhuān)業(yè),歡迎來(lái)電咨詢建站服務(wù):13518219792
SQL Server是如何管理觸發(fā)器來(lái)完成這些任務(wù)呢?下面我們將對(duì)SQL Server管理觸發(fā)器工作原理及實(shí)現(xiàn)做較為詳細(xì)的介紹。
每個(gè)觸發(fā)器有兩個(gè)特殊的表:插入表和刪除表。這兩個(gè)表是邏輯表,并且這兩個(gè)表是由系統(tǒng)管理的,存儲(chǔ)在內(nèi)存中,不是存儲(chǔ)在數(shù)據(jù)庫(kù)中,因此不允許用戶直接對(duì)其修改。這兩個(gè)表的結(jié)構(gòu)總是與被該觸發(fā)器作用的表有相同的表結(jié)構(gòu)。這兩個(gè)表是動(dòng)態(tài)駐留在內(nèi)存中的,當(dāng)觸發(fā)器工作完成,這兩個(gè)表也被刪除。這兩個(gè)表主要保存因用戶操作而被影響到的原數(shù)據(jù)值或新數(shù)據(jù)值。另外,這兩個(gè)表是只讀的,即用戶不能向這兩個(gè)表寫(xiě)入內(nèi)容,但可以引用表中的數(shù)據(jù)。例如可用如下語(yǔ)句查看DELETED 表中的信息:
select * from deleted
下面詳細(xì)介紹這兩個(gè)表的功能:
1 插入表的功能
對(duì)一個(gè)定義了插入類(lèi)型觸發(fā)器的表來(lái)講,一旦對(duì)該表執(zhí)行了插入操作,那么對(duì)向該表插入的所有行來(lái)說(shuō),都有一個(gè)相應(yīng)的副本存放到插入表中。即插入表就是用來(lái)存儲(chǔ)向原表插入的內(nèi)容。
2 刪除表的功能
對(duì)一個(gè)定義了刪除類(lèi)型觸發(fā)器的表來(lái)講,一旦對(duì)該表執(zhí)行了刪除操作,則將所有的刪除行存放至刪除表中。這樣做的目的是,一旦觸發(fā)器遇到了強(qiáng)迫它中止的語(yǔ)句被執(zhí)行時(shí),刪除的那些行可以從刪除表中得以恢復(fù)。
需要強(qiáng)調(diào)的是,更新操作包括兩個(gè)部分,即先將更新的內(nèi)容去掉,然后將新值插入。因此對(duì)一個(gè)定義了更新類(lèi)型觸發(fā)器的表來(lái)講,當(dāng)報(bào)告會(huì)更新操作時(shí),在刪除表中存放了舊值,然后在插入表中存放新值。
由于觸發(fā)器僅當(dāng)被定義的操作被執(zhí)行時(shí)才被激活,即僅當(dāng)在執(zhí)行插入、刪除、和更新操作時(shí),觸發(fā)器將執(zhí)行。每條SQL語(yǔ)句僅能激活觸發(fā)器一次,可能存在一條語(yǔ)句影響多 條記錄的情況。在這種情況下就需要變量@@rowcount 的值,該變量存儲(chǔ)了一條SQL 語(yǔ) 句執(zhí)行后所影響的記錄數(shù),可以使用該值對(duì)觸發(fā)器的SQL 語(yǔ)句執(zhí)行后所影響的記錄求合計(jì)值。一般來(lái)說(shuō),首先要用IF語(yǔ)句測(cè)試@@rowcount的值以確定后面的語(yǔ)句是否執(zhí)行。
新聞標(biāo)題:帶您了解SQLServer管理觸發(fā)器
轉(zhuǎn)載源于:http://fisionsoft.com.cn/article/cocgege.html


咨詢
建站咨詢
