自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Sql Server觸發(fā)器使用原理的描述

數(shù)據(jù)庫(kù) SQL Server
我們今天主要是和大家一起分享的是Sql Server觸發(fā)器的基本原理,以及對(duì)其在實(shí)際操作中要用到的相關(guān)功能的描述。

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

Sql Server觸發(fā)器:

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

 

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

 

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

自動(dòng)地激活。

2、這樣做帶來(lái)的 '功能':

 

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

 

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

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

性約束或不正確的修改。

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

 

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

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

 

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

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

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

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

 

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

 

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

 

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

 

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

 

說(shuō)明:

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

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

的操作。

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

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

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

 

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

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

 

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

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

 

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

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

這樣有什么用途?

 

帶著問(wèn)題看,具體操作步驟和過(guò)程:

 

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

 

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

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

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

 

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

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

說(shuō)明: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ā)器,為解決什么問(wèn)題而設(shè)計(jì)?

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

 

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

 

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

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

作業(yè):

 

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

cust_test: CustomerID char(5) PK order_test: CustomerID char(5)--對(duì)應(yīng)關(guān)系 Custcity Orderid PK Custname OrderNames CStatus int OStatus int --狀態(tài) Cstorage int Orders int --定購(gòu)量和庫(kù)存量 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表中對(duì)應(yīng)

記錄status值為1,說(shuō)明處于準(zhǔn)備狀態(tài)不能寫(xiě)入該數(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)容就是對(duì)Sql Server觸發(fā)器的介紹,望你能有所收獲。

【編輯推薦】

  1. SQL Server 2000優(yōu)化SELECT 語(yǔ)句的方案介紹
  2. SQL Server 2000文件損壞的修復(fù)方案
  3. 改善SQL Server安全規(guī)劃的6步驟
  4. SQL Server 2000重建索引的實(shí)際操作流程
  5. SQL Server備份文件中對(duì)現(xiàn)存數(shù)據(jù)庫(kù)的導(dǎo)入

 

責(zé)任編輯:佚名 來(lái)源: 網(wǎng)界網(wǎng)
相關(guān)推薦

2009-04-07 13:56:03

SQL Server觸發(fā)器實(shí)例

2010-06-30 09:36:25

SQL Server

2010-10-20 14:34:48

SQL Server觸

2010-07-16 10:19:31

2010-11-12 15:35:55

SQL Server約

2010-09-13 17:03:34

sql server觸

2010-11-10 13:37:01

SQL Server觸

2010-10-22 11:10:43

SQL Server觸

2010-11-08 11:49:24

SQL Server管

2010-07-06 14:47:03

SQL Server數(shù)

2010-09-01 16:40:00

SQL刪除觸發(fā)器

2010-10-19 15:31:40

sql server觸

2011-03-03 09:30:24

downmoonsql登錄觸發(fā)器

2010-07-05 11:09:55

SQL Server觸

2019-10-22 07:50:45

SqlServer數(shù)據(jù)庫(kù)觸發(fā)器

2010-07-05 08:31:25

SQL Server快

2010-09-13 16:46:10

SQL Server觸

2011-03-28 10:05:57

sql觸發(fā)器代碼

2010-07-07 09:47:04

SQL Server索

2019-12-02 11:13:38

數(shù)據(jù)庫(kù)觸發(fā)器SQLServer
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)