亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        使用SQL Server觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)表的級(jí)聯(lián)更新

        2016-03-10 12:28:24王鵬宇
        科技視界 2016年25期
        關(guān)鍵詞:觸發(fā)器數(shù)據(jù)表級(jí)聯(lián)

        王鵬宇

        (鶴壁職業(yè)技術(shù)學(xué)院,河南 鶴壁458030)

        使用SQL Server觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)表的級(jí)聯(lián)更新

        王鵬宇

        (鶴壁職業(yè)技術(shù)學(xué)院,河南 鶴壁458030)

        數(shù)據(jù)庫(kù)的數(shù)據(jù)完整性是數(shù)據(jù)庫(kù)正常運(yùn)行的重要保證,而觸發(fā)器是保證數(shù)據(jù)完整性的重要方式。本文講述了DML觸發(fā)器的分類(lèi)及工作原理,并通過(guò)具體實(shí)例詳細(xì)討論了如何使用觸發(fā)器來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的級(jí)聯(lián)更新,從而更好的保證數(shù)據(jù)庫(kù)數(shù)據(jù)完整性。

        觸發(fā)器;數(shù)據(jù)完整性;級(jí)聯(lián)更新

        0 引言

        數(shù)據(jù)庫(kù)完整性就是保證數(shù)據(jù)庫(kù)中數(shù)據(jù)的正確性和一致性。其中正確性指數(shù)據(jù)要符合語(yǔ)義規(guī)范,數(shù)據(jù)定義在規(guī)范的有效范圍內(nèi);一致性是指數(shù)據(jù)庫(kù)中所表示的同一事物的數(shù)據(jù)應(yīng)當(dāng)一致。在SQL Server中數(shù)據(jù)庫(kù)完整性主要有約束來(lái)定義,約束定義了必須遵循的用于維護(hù)數(shù)據(jù)一致性和正確性的有效性規(guī)則。簡(jiǎn)單的完整性要求可以在定義基本表時(shí)通過(guò)創(chuàng)建約束來(lái)實(shí)現(xiàn),但如果想要實(shí)現(xiàn)更為復(fù)雜的數(shù)據(jù)完整性要求,比如依據(jù)數(shù)據(jù)表的變化實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)級(jí)聯(lián)更新等,這就需要用觸發(fā)器來(lái)完成了。本文淺析了在SQL Server中通過(guò)觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)庫(kù)完整性的原理,并結(jié)合一個(gè)實(shí)例分析了使用觸發(fā)器實(shí)現(xiàn)級(jí)聯(lián)更新的一般過(guò)程。

        1 觸發(fā)器概述及其工作原理

        觸發(fā)器是SQL Server數(shù)據(jù)庫(kù)的重要工具,可以被看作是一種特殊的存儲(chǔ)過(guò)程。一般的存儲(chǔ)過(guò)程通過(guò)存儲(chǔ)過(guò)程名稱(chēng)被調(diào)用執(zhí)行,而觸發(fā)器是通過(guò)數(shù)據(jù)庫(kù)事件的觸發(fā)而被執(zhí)行,在對(duì)觸發(fā)器所監(jiān)控的表執(zhí)行添加、修改或刪除操作時(shí)觸發(fā)器被觸發(fā)。觸發(fā)器的過(guò)程體中可以包含復(fù)雜的SQL語(yǔ)句,因此觸發(fā)器可以實(shí)現(xiàn)比約束更加復(fù)雜的數(shù)據(jù)完整性要求。

        在 SQL Server 2005中有兩種觸發(fā)器:DDL觸發(fā)器和 DML觸發(fā)器。DDL觸發(fā)器是被數(shù)據(jù)定義語(yǔ)句(DDL)所觸發(fā)而被調(diào)用的觸發(fā)器; DML觸發(fā)器是被數(shù)據(jù)操作語(yǔ)句(DML)所觸發(fā)而被調(diào)用的觸發(fā)器。數(shù)據(jù)完整性規(guī)則主要由DML觸發(fā)器創(chuàng)建,因此本文主要討論DML觸發(fā)器。由于觸發(fā)器被激活后所執(zhí)行的操作不同,SQL Server中包含兩種觸發(fā)方式:After觸發(fā)方式和Instead Of觸發(fā)方式。After觸發(fā)方式是比較常用的觸發(fā)方式(另有一種For觸發(fā)方式與After相同,是為與 SQL Server早期版本兼容的可選項(xiàng)),這種觸發(fā)方式的觸發(fā)器在進(jìn)行數(shù)據(jù)操作以后被觸發(fā),先執(zhí)行了觸發(fā)語(yǔ)句(插入、更新、刪除),然后執(zhí)行了觸發(fā)器。INSTEAD OF觸發(fā)方式在數(shù)據(jù)發(fā)生變化之前被觸發(fā),停止觸發(fā)語(yǔ)句(插入、更新、刪除)的執(zhí)行,直接執(zhí)行觸發(fā)器定義的內(nèi)容。

        本文將以After觸發(fā)器為例來(lái)講述使用觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)庫(kù)級(jí)聯(lián)更新。其創(chuàng)建語(yǔ)法格式如下:

        CREATE TRIGGER trigger_name

        ON table_name

        AFTER{[INSERT][,][UPDATE][,][DELETE]}

        AS

        Sql_statements

        在實(shí)際應(yīng)用中,SQL Server為每個(gè)觸發(fā)器都創(chuàng)建了兩個(gè)專(zhuān)用表:Inserted表和Deleted表,當(dāng)觸發(fā)器被執(zhí)行時(shí)產(chǎn)生。這是兩個(gè)邏輯表,存放于內(nèi)存中,表的結(jié)構(gòu)與被觸發(fā)器作用的表的結(jié)構(gòu)相同且由系統(tǒng)自動(dòng)創(chuàng)建和撤銷(xiāo)。

        當(dāng)執(zhí)行Insert語(yǔ)句時(shí),Inserted表中保存要向表中插入的所有行。

        當(dāng)執(zhí)行Delete語(yǔ)句時(shí),Deleted表中保存要從表中刪除的所有行。

        當(dāng)執(zhí)行Update語(yǔ)句時(shí),相當(dāng)于先執(zhí)行一個(gè)Delete操作,再執(zhí)行一個(gè)Insert操作。

        2 觸發(fā)器應(yīng)用案例

        下面我們以淘寶某網(wǎng)店數(shù)據(jù)表為例討論一下使用觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)表的級(jí)聯(lián)更新。

        我們知道在商品購(gòu)物頁(yè)面點(diǎn)擊立即購(gòu)買(mǎi)后,雖然我們還沒(méi)有付錢(qián)但是這就表示我們和商家之間已經(jīng)生成了一個(gè)訂單。那么其他人再打開(kāi)此商品的購(gòu)買(mǎi)頁(yè)面時(shí),頁(yè)面上顯示的庫(kù)存數(shù)量就應(yīng)該更新為新的庫(kù)存數(shù)量了。其實(shí)這個(gè)過(guò)程就是通過(guò)觸發(fā)器更新數(shù)據(jù)表來(lái)實(shí)現(xiàn)的。

        在淘寶網(wǎng)站的后臺(tái),買(mǎi)家購(gòu)買(mǎi)了某商品后就會(huì)生成一個(gè)新的訂單,也就是說(shuō)在訂單表中會(huì)插入一條新的記錄來(lái)表示這個(gè)新訂單,其中就包含了訂單編號(hào)、商品編號(hào)、商品價(jià)格、購(gòu)買(mǎi)數(shù)量等信息。同時(shí)在庫(kù)存表中被購(gòu)買(mǎi)商品的庫(kù)存數(shù)量也應(yīng)該被更新為原來(lái)的庫(kù)存數(shù)量減去購(gòu)買(mǎi)數(shù)量從而生成新的庫(kù)存數(shù)量。這個(gè)過(guò)程的實(shí)現(xiàn)就被稱(chēng)為數(shù)據(jù)表的級(jí)聯(lián)更新,所謂級(jí)聯(lián)更新也叫聯(lián)動(dòng)更新,指當(dāng)我們修改了一個(gè)數(shù)據(jù)表中的某些數(shù)據(jù),系統(tǒng)會(huì)自動(dòng)去修改另一個(gè)數(shù)據(jù)表相應(yīng)數(shù)據(jù)。

        首先我們先要在訂單表上建立一個(gè)insert觸發(fā)器用于響應(yīng)對(duì)訂單表的插入操作。當(dāng)我們點(diǎn)擊立即購(gòu)買(mǎi)后,系統(tǒng)會(huì)生成一個(gè)新的訂單,然后把新訂單的數(shù)據(jù)插入到訂單表中,同時(shí)也會(huì)觸發(fā)insert觸發(fā)器這樣訂單數(shù)據(jù)也會(huì)同步插入到inserted表中,然后會(huì)執(zhí)行這個(gè)觸發(fā)器。那么我們就可以在這個(gè)觸發(fā)器中定義一個(gè)更新操作,去同步更新庫(kù)存表,讓庫(kù)存量跟新為新的庫(kù)存量。

        create trigger t1

        on訂單表

        for insert

        as

        update庫(kù)存表

        set庫(kù)存數(shù)量=庫(kù)存數(shù)量- (select購(gòu)買(mǎi)數(shù)量from inserted)

        where商品編號(hào)=(select商品編號(hào) from inserted)

        可以看到經(jīng)過(guò)這個(gè)觸發(fā)器的執(zhí)行,用戶(hù)在下訂單的同時(shí)商品的庫(kù)存數(shù)量也被相應(yīng)的修改為新的庫(kù)存數(shù)量。

        3 結(jié)束語(yǔ)

        在數(shù)據(jù)庫(kù)的應(yīng)用中,觸發(fā)器起到了非常重要的作用。它是保證數(shù)據(jù)完整性的重要補(bǔ)充工具,它可以很容易的實(shí)現(xiàn)表間操作所引發(fā)的數(shù)據(jù)的級(jí)聯(lián)更新從而能夠更好的保證數(shù)據(jù)的完整性,幫助用戶(hù)實(shí)現(xiàn)滿(mǎn)足企業(yè)需求的規(guī)則,使得數(shù)據(jù)庫(kù)系統(tǒng)更加方便、高效和安全。

        這篇文章結(jié)合具體的實(shí)例討論了DML觸發(fā)器的工作原理和實(shí)現(xiàn)數(shù)據(jù)表級(jí)聯(lián)更新的方法。結(jié)果表明應(yīng)用觸發(fā)器不僅可以處理表與表之間復(fù)雜的邏輯關(guān)系,優(yōu)化數(shù)據(jù)庫(kù)的設(shè)計(jì),更好地維護(hù)數(shù)據(jù)庫(kù)中數(shù)據(jù)的完整性;同時(shí)還可以實(shí)現(xiàn)由于數(shù)據(jù)修改而引發(fā)的相關(guān)數(shù)據(jù)的自動(dòng)級(jí)聯(lián)更新操作,從而更安全高效的完成數(shù)據(jù)更新,避免了人工操作帶來(lái)的安全隱患,提高了整體數(shù)據(jù)庫(kù)系統(tǒng)的安全性能。

        [1]王珊,薩師煊.?dāng)?shù)據(jù)庫(kù)系統(tǒng)概論(第4版)[M].北京:高等教育出版社,2006.

        [2]羅運(yùn)模,王珊.SQL Server數(shù)據(jù)庫(kù)系統(tǒng)基礎(chǔ)[M].北京:高等教育出版社,2003.

        [3]張益星.SQL Server 2000觸發(fā)器技術(shù)及應(yīng)用[J].信息技術(shù),2005(10):69-70.

        [4]徐國(guó)華,白鳳娥.數(shù)據(jù)庫(kù)中的觸發(fā)器技術(shù)[J].太原大學(xué)學(xué)報(bào),2006(3):64-65.

        [5]符策銳.觸發(fā)器保持評(píng)教系統(tǒng)數(shù)據(jù)完整性的應(yīng)用研究[J].微計(jì)算機(jī)信息,2012,28 (8):173-174,24.

        [責(zé)任編輯:朱麗娜]

        王鵬宇(1978—),漢族,河南淇縣人,華中科技大學(xué)計(jì)算機(jī)技術(shù)碩士,鶴壁職業(yè)技術(shù)學(xué)院,講師,研究方向?yàn)檐浖O(shè)計(jì)、數(shù)據(jù)庫(kù)技術(shù)。

        猜你喜歡
        觸發(fā)器數(shù)據(jù)表級(jí)聯(lián)
        湖北省新冠肺炎疫情數(shù)據(jù)表
        黨員生活(2020年2期)2020-04-17 09:56:30
        基于列控工程數(shù)據(jù)表建立線(xiàn)路拓?fù)潢P(guān)系的研究
        主從JK觸發(fā)器邏輯功能分析
        電子世界(2017年22期)2017-12-02 03:03:45
        使用觸發(fā)器,強(qiáng)化安全性
        級(jí)聯(lián)LDPC碼的STBC-OFDM系統(tǒng)
        電子制作(2016年15期)2017-01-15 13:39:09
        基于級(jí)聯(lián)MUSIC的面陣中的二維DOA估計(jì)算法
        圖表
        LCL濾波器在6kV級(jí)聯(lián)STATCOM中的應(yīng)用
        H橋級(jí)聯(lián)型STATCOM的控制策略研究
        基于VSL的動(dòng)態(tài)數(shù)據(jù)表應(yīng)用研究
        河南科技(2014年24期)2014-02-27 14:19:25
        欧美综合自拍亚洲综合百度| av无码天堂一区二区三区| 最新亚洲人成无码网www电影| 高清高速无码一区二区| 日本黄色一区二区三区| 国产精品久久久久久人妻无| 中文字幕人妻熟女人妻洋洋| 久久频精品99香蕉国产| 日韩成人高清不卡av| 国产精品偷窥熟女精品视频| 日本一卡2卡3卡四卡精品网站| 91短视频在线观看免费| 亚洲人妻精品一区二区三区| 久久精品夜色噜噜亚洲a∨| 中国丰满熟妇xxxx| 亚洲男人天堂av在线| 亚洲国产高清一区av| 麻豆亚洲av熟女国产一区二| 久久精品国产亚洲精品| 久久精品午夜免费看| 国产av一卡二卡日韩av| 色一情一乱一伦| 成人a在线观看| 91精品国产综合久久久蜜臀九色| 日本在线视频www色| 18禁超污无遮挡无码免费游戏 | 日韩人妻免费视频一专区| 久久久久久久波多野结衣高潮| 福利网址在线观看| 日韩人妻免费一区二区三区| 26uuu在线亚洲欧美| 少妇人妻偷人精品视频| 久久国产精品免费一区六九堂| 人妻少妇中文字幕,久久精品| 乱人妻中文字幕| 国产成人77亚洲精品www| 人妻中文字幕一区二区三区| 日韩欧美在线综合网另类 | 久久无码av三级| 国产成人精品蜜芽视频| 日本不卡的一区二区三区中文字幕|