資源描述:
《如何使用sql server instead》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、如何使用SQLServerINSTEAD 觸發(fā)器是類似于存儲程序的數(shù)據(jù)庫對象,它響應(yīng)數(shù)據(jù)庫環(huán)境下的某個請求。SQLSever2005包含3個觸發(fā)器對象:AFTER,數(shù)據(jù)定義語言(DDL)和INSTEAD-OF?! FTER觸發(fā)器是存儲程序,它發(fā)生于數(shù)據(jù)操作語句作用之后,例如刪除語句等。DDL是SQLServer2005的新觸發(fā)器,允許響應(yīng)數(shù)據(jù)庫引擎中對象定義水平事件(例如:DROPTABLE語句)。INSTEAD-OF觸發(fā)器是對象,在數(shù)據(jù)庫引擎中可以取代數(shù)據(jù)操作語句而執(zhí)行。例如:將INSTEAD-OFINSERT觸發(fā)器附加到表,告訴數(shù)據(jù)庫執(zhí)行此觸發(fā)器?! ∈褂肐NSTEAD-OF觸發(fā)器
2、的理由 INSTEAD-OF觸發(fā)器是SQLSever功能強(qiáng)大的對象,允許開發(fā)人員轉(zhuǎn)移數(shù)據(jù)庫引擎完成不同的工作,以滿足開發(fā)要求。其中的一個例子是在數(shù)據(jù)庫的表中添加INSTEAD-OF觸發(fā)器,當(dāng)不需要修改表時,可以對表的內(nèi)容進(jìn)行回滾。使用此方法時,必須格外小心,因為任何指定的表修改之前,INSTEAD-OF觸發(fā)器必須處于激活狀態(tài)?! ∈褂肐NSTEAD-OF觸發(fā)器一個更充分理由是視圖處理。在視圖中添加INSTEAD-OF觸發(fā)器后,則可創(chuàng)建更新的視圖。可更新視圖允許完整地提取數(shù)據(jù)庫大綱,因此可以用此方法設(shè)計系統(tǒng),而不需要擔(dān)心OLTP數(shù)據(jù)庫大綱的問題,并且取代數(shù)據(jù)修改一組標(biāo)準(zhǔn)視圖集?! 》独?l
3、t;b>ListingA</b>CREATETABLEProducts( ProductIDSMALLINTIDENTITY(1,1)PRIMARYKEY, DescriptionVARCHAR(75), PriceMONEYNOTNULL)GOCREATETABLEPurchases( PurchaseIDSMALLINTIDENTITY(1,1)PRIMARYKEY, ProductIDSMALLINTREFERENCESProducts(ProductID), PurchasePriceMONEYNOTNULL, PurchaseDate
4、SMALLDATETIMEDEFAULT(GETDATE())) 為了更好地說明可更新視圖概念,我們提供一個示例。在本例中,我們設(shè)計一個產(chǎn)品表(記錄產(chǎn)品),一個購買表(記錄購買)。ListingA包含了創(chuàng)建表的腳本,運行此腳本后則得到示例中所要用到的表。運行ListingB腳本向表中添加數(shù)據(jù)。<b>ListingB</b>INSERTINTOProducts(Description,Price)VALUES('Television',500)INSERTINTOProducts(Description,Price)VALUES('VCR
5、39;,100)INSERTINTOProducts(Description,Price)VALUES('DVD_Player',125)INSERTINTOProducts(Description,Price)VALUES('Alarm_Clock',40)INSERTINTOProducts(Description,Price)VALUES('Camera',325)INSERTINTOProducts(Description,Price)VALUES('Projector',1500)INSERTINTOProducts
6、(Description,Price)VALUES('XBox',400)GOINSERTINTOPurchases(ProductID,PurchasePrice)VALUES(1,500)INSERTINTOPurchases(ProductID,PurchasePrice)VALUES(5,325)INSERTINTOPurchases(ProductID,PurchasePrice)VALUES(1,525)GO 現(xiàn)在表中已經(jīng)有數(shù)據(jù)了,我可以為這些表創(chuàng)建一些有意義的視圖。請查看ListingC。<b>istingC</b>CREATEVIE
7、Wv Productspr INNERJOINPurchasespuONpr.ProductID=pu.ProductIDGO 這是個典型的產(chǎn)品水平的視圖。它聯(lián)合了數(shù)據(jù)庫中的兩個表,使得數(shù)據(jù)簡單化了。但是,對于數(shù)據(jù)提取,使用視圖則沒有什么優(yōu)勢。在視圖上附上INSTEAD-OF觸發(fā)器后,則允許修改表,但是我不需要直接修改表中的數(shù)據(jù)。我使用ListingD中的代碼在vINSERTED WHER