• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      SQL Server 2005中用觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)庫的數(shù)據(jù)完整性研究

      2011-11-07 08:37:06鄧有林
      關(guān)鍵詞:保山觸發(fā)器完整性

      鄧有林

      (保山學(xué)院信息學(xué)院,云南保山678000)

      SQL Server 2005中用觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)庫的數(shù)據(jù)完整性研究

      鄧有林

      (保山學(xué)院信息學(xué)院,云南保山678000)

      數(shù)據(jù)庫中的數(shù)據(jù)是從外界輸入的,輸入后面臨修改、刪除等操作,由于種種原因,會(huì)發(fā)生輸入無效或錯(cuò)誤信息。保證數(shù)據(jù)庫中數(shù)據(jù)的完整性,成為數(shù)據(jù)庫系統(tǒng),尤其是多用戶的關(guān)系數(shù)據(jù)庫系統(tǒng)首要關(guān)注的問題。本文介紹了在SQL Server 2005數(shù)據(jù)庫系統(tǒng)中,用觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)完整性的控制方法,并舉例說明觸發(fā)器的實(shí)際應(yīng)用。

      SQL Server 2005;數(shù)據(jù)完整性;觸發(fā)器

      一、前言

      數(shù)據(jù)完整性是指數(shù)據(jù)庫中數(shù)據(jù)的正確性、有效性和相容性,為了防止數(shù)據(jù)庫中存在不符合語義規(guī)定的數(shù)據(jù)和防止系統(tǒng)輸入/輸出無效信息而提出的[2]P97。

      觸發(fā)器是一種特殊類型的存儲(chǔ)過程,這種存儲(chǔ)過程不能被用戶直接調(diào)用,而是通過事件進(jìn)行觸發(fā)而被執(zhí)行的[2]P206。它是一個(gè)強(qiáng)有力的工具,可以使商業(yè)的業(yè)務(wù)規(guī)則集成到數(shù)據(jù)庫中去,從而使其可以繞開用戶控制,使系統(tǒng)在有數(shù)據(jù)修改時(shí)能夠強(qiáng)行執(zhí)行其業(yè)務(wù)規(guī)則。不但保證了數(shù)據(jù)的完整性,同時(shí)還保留了存儲(chǔ)過程高效率的特點(diǎn),為系統(tǒng)提供了良好的性能。

      觸發(fā)器主要有如下優(yōu)點(diǎn):觸發(fā)器可以強(qiáng)制限制,設(shè)置復(fù)雜的約束,這些限制比CHECK約束所定義的更為復(fù)雜;對用戶透明,自動(dòng)執(zhí)行,當(dāng)對表中的數(shù)據(jù)作了任何修改后立即被激活;觸發(fā)器可以通過數(shù)據(jù)庫中的相關(guān)表實(shí)現(xiàn)級(jí)聯(lián)操作,進(jìn)行層疊更改;可以截獲用戶修改表時(shí)的輸入數(shù)據(jù),采取相應(yīng)的措施;一個(gè)表中的多個(gè)同類觸發(fā)器(INSERT、UPDATE或DELETE)允許采取多個(gè)不同的對策以響應(yīng)同一個(gè)修改語句。

      觸發(fā)器有著廣泛的應(yīng)用,但也存在著內(nèi)在的約束,具體限定機(jī)制如下:觸發(fā)器只在觸發(fā)它的語句完成后執(zhí)行,一個(gè)語句只能觸動(dòng)一次觸發(fā)器;如果語句在表中執(zhí)行違反條件約束或引起錯(cuò)誤,觸發(fā)器不會(huì)觸動(dòng);觸發(fā)器視為單一事務(wù)中的一部分,因此可以由原觸發(fā)器復(fù)原事務(wù),如果在事務(wù)過程中偵測到嚴(yán)重的錯(cuò)誤,則會(huì)自動(dòng)復(fù)原整個(gè)事務(wù);當(dāng)觸發(fā)器觸動(dòng)時(shí)若產(chǎn)生任何結(jié)果,就會(huì)將結(jié)果傳回其調(diào)用的應(yīng)用程序[2]P206。

      二、SQL Server 2005的觸發(fā)器

      在SQL Server 2005中,根據(jù)觸發(fā)事件的不同,觸發(fā)器可以分為兩類,一類是DML觸發(fā)器,另一類是DDL觸發(fā)器。其中DDL觸發(fā)器是SQLServer 2005的新增功能,當(dāng)服務(wù)器或數(shù)據(jù)庫中發(fā)生數(shù)據(jù)定義語言(DDL)事件時(shí)將調(diào)用該觸發(fā)器;DML觸發(fā)器是指當(dāng)數(shù)據(jù)庫中發(fā)生數(shù)據(jù)操作語言(DML)事件時(shí)被調(diào)用。

      1.DML觸發(fā)器

      DML觸發(fā)器是當(dāng)服務(wù)器中發(fā)生數(shù)據(jù)操作語言(DML)事件時(shí)執(zhí)行的操作。DML觸發(fā)器包括三種類型:AFTER觸發(fā)器、INSTEADOF觸發(fā)器、CLR觸發(fā)器。

      AFTER觸發(fā)器在執(zhí)行了INSERT、UPDATE或DELETE語句操作之后執(zhí)行,INSTEADOF觸發(fā)器在INSERT、UPDATE或DELETE語句運(yùn)行時(shí)替代操作,CLR觸發(fā)器將執(zhí)行在托管代碼中(如.NETFramework)編寫的方法,而非Transact-SQL存儲(chǔ)過程。

      2.DDL觸發(fā)器

      DDL觸發(fā)器是SQL Server 2005的新增功能,當(dāng)服務(wù)器或數(shù)據(jù)庫中發(fā)生數(shù)據(jù)定義語言DDL事件時(shí)將調(diào)用這些觸發(fā)器,在CREATE、ALTER、DROP和其他DDL語句上操作,用于執(zhí)行管理任務(wù)。

      三、在SQL Server 2005中用觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)完整性

      SQL Server 2005中的觸發(fā)器有DML和DDL兩種,本文主要介紹利用DML觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)完整性。

      SQL Server 2005觸發(fā)器在使用過程中,系統(tǒng)自動(dòng)為其創(chuàng)建Inserted和Deleted兩個(gè)臨時(shí)表,這兩個(gè)表固定存儲(chǔ)在與觸發(fā)器一起的內(nèi)存中,不存放在數(shù)據(jù)庫中,由系統(tǒng)自動(dòng)維護(hù)。這兩個(gè)臨時(shí)表的結(jié)構(gòu)與觸發(fā)器作用的數(shù)據(jù)表的結(jié)構(gòu)相同,存放被插入、刪除或更新的記錄的副本,每個(gè)觸發(fā)器只能訪問自己的臨時(shí)表,觸發(fā)器工作完成后,與該觸發(fā)器相關(guān)的這兩個(gè)臨時(shí)表也會(huì)被自動(dòng)刪除。由于Inserted和Deleted兩個(gè)表中存放的是被操作的記錄的副本,所以,可以通過Select語句檢查Inserted和Deleted表中記錄,來實(shí)現(xiàn)數(shù)據(jù)的有效性、完整性和一致性的控制檢查。

      本文以“學(xué)生成績管理”數(shù)據(jù)庫為例,在數(shù)據(jù)的插入、刪除和修改中,介紹利用觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)的完整新、有效性和一致性的方法。該數(shù)據(jù)庫的主要表及其結(jié)構(gòu)如下:

      學(xué)生(學(xué)號(hào),姓名,性別,班級(jí),出生日期,聯(lián)系電話)

      課程(課程編號(hào),課程名稱,周學(xué)時(shí),學(xué)分)

      成績(學(xué)號(hào),課程編號(hào),成績)

      根據(jù)該數(shù)據(jù)庫在實(shí)際應(yīng)用中的要求,學(xué)生表中的“學(xué)號(hào)”是主關(guān)鍵字,不允許重復(fù),“性別”必須是“男”或“女”;課程表的“課程編號(hào)”是主關(guān)鍵字,不允許重復(fù);成績表中的“學(xué)號(hào)”和“課程編號(hào)”是外部關(guān)鍵字,必須與學(xué)生表中的“學(xué)號(hào)”和課程表中的“課程編號(hào)”一致。在學(xué)生記錄的插入時(shí),應(yīng)檢查是否出現(xiàn)學(xué)號(hào)重復(fù),性別是否正確。

      1.INSERT觸發(fā)器

      當(dāng)執(zhí)行INSERT語句往表中插入新記錄時(shí),插入的記錄被同時(shí)添加到inserted表中,將inserted表中的記錄與其他相關(guān)表中記錄作比對,可以實(shí)現(xiàn)數(shù)據(jù)一致性的控制,對inserted表中的數(shù)據(jù)進(jìn)行分析,可以實(shí)現(xiàn)數(shù)據(jù)有效性和完整性的控制。

      學(xué)生表插入記錄的觸發(fā)器設(shè)計(jì):

      2.DELETE觸發(fā)器

      執(zhí)行DELETE語句刪除表中記錄時(shí),被刪除的記錄會(huì)被傳送到deleted表中,可以對deleted表中記錄進(jìn)行備份,以備以后查看及恢復(fù),也可以與其他表中數(shù)據(jù)進(jìn)行比對,判斷記錄是否可以被刪除,例如,刪除學(xué)生記錄時(shí),如果該學(xué)生還存在成績信息就不能刪除。

      3.UPDATE觸發(fā)器

      執(zhí)行UPDATE語句更新表中數(shù)據(jù)時(shí),相當(dāng)于同時(shí)執(zhí)行DELETE和INSERT操作,修改前的記錄被保存到deleted表中,修改后的記錄被保存到inserted表中??梢岳眠@兩個(gè)臨時(shí)表,進(jìn)行記錄的級(jí)聯(lián)更新,例如,更新了學(xué)生表中的學(xué)號(hào),將一起更新成績表中相應(yīng)的學(xué)號(hào)。

      更新學(xué)生記錄的觸發(fā)器設(shè)計(jì):

      課程表的觸發(fā)器設(shè)計(jì),與學(xué)生表中記錄的增加、修改、刪除操作的觸發(fā)器設(shè)計(jì)是一樣的模式。

      四、總結(jié)

      觸發(fā)器能保持?jǐn)?shù)據(jù)的完整性、有效性和一致性,當(dāng)對表中記錄進(jìn)行操作時(shí)可以對其進(jìn)行檢測控制,也可以方便地基于一個(gè)表的修改,自動(dòng)更新其他相關(guān)表的記錄,以保證數(shù)據(jù)的一致性。在數(shù)據(jù)庫的應(yīng)用中,觸發(fā)器扮演著很重要的角色,無論是作為提供高級(jí)參照完整性功能的途徑,還是執(zhí)行自動(dòng)維護(hù)非正規(guī)化數(shù)據(jù)的任務(wù),觸發(fā)器都能幫助用戶實(shí)現(xiàn)滿足實(shí)際需要的規(guī)則,簡化業(yè)務(wù)邏輯,并使系統(tǒng)更方便更有效。

      [1]劉曉玲.SQL Server中利用觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)完整性[J].濟(jì)南職業(yè)學(xué)院學(xué)報(bào).2005(4)

      [2]虞益誠.SQL Server 2005數(shù)據(jù)庫應(yīng)用技術(shù)(第二版)[M].北京:中國鐵道出版社,2004(12)

      [3]焦華.數(shù)據(jù)庫技術(shù)及應(yīng)用[M].北京:地址出版社,2006(8)

      [4]徐友武.SQLServer 2005觸發(fā)器應(yīng)用研究 [J].計(jì)算機(jī)與信息技術(shù),2009(9)

      [5]馮洪峰.存儲(chǔ)過程在SQL Server 2005中應(yīng)用[J].電腦編程與技巧,2010(14)

      [6]蘇志軍.淺析SQL Server 2005中的DDL觸發(fā)器技術(shù)[J].電腦學(xué)習(xí),2010(3)

      [7]鐘亞妹.觸發(fā)器在SQL Server數(shù)據(jù)庫開發(fā)中的應(yīng)用與研究[J].電腦知識(shí)與技術(shù),2011(11)

      The Research of the Data Integrity of SQL Server 2005 with Trigger Realize Database

      DENG You-Lin
      (Baoshan collegeinformation institutein baoshan,Baoshan 678000,yunnan)

      thedatain thedatabasefromoutsideof theinput,Then it facesafter modification and deletion of operation,it will occur input invalid or false information duetovariousreasons.Ensuretheintegrity of thedatain thedatabase,becomeadatabasesystem,especially many users database systemtop issue.Thispaper introducesthe SQLServer 2005 databasesystems,realizethe integrity of thedatawith flip-flop control method,and illustrate theactual application of thetrigger.

      SQL Server 2005;dataintegrity;trigger

      TP12

      A

      1671-5004(2011) 04-0023-03

      2011-6-20

      鄧有林(1977—),男,保山學(xué)院講師,在讀研究生,研究方向:計(jì)算機(jī)應(yīng)用技術(shù)、數(shù)據(jù)庫。

      猜你喜歡
      保山觸發(fā)器完整性
      稠油熱采水泥環(huán)完整性研究
      云南化工(2021年9期)2021-12-21 07:44:00
      走過萬水千山 最愛一座保山
      主從JK觸發(fā)器邏輯功能分析
      電子世界(2017年22期)2017-12-02 03:03:45
      莫斷音動(dòng)聽 且惜意傳情——論音樂作品“完整性欣賞”的意義
      使用觸發(fā)器,強(qiáng)化安全性
      精子DNA完整性損傷的發(fā)生機(jī)制及診斷治療
      PTN技術(shù)在保山廣電網(wǎng)絡(luò)的具體應(yīng)用
      漫畫10幅
      樁身完整性檢測中缺陷的綜合判別
      河南科技(2014年18期)2014-02-27 14:14:46
      對觸發(fā)器邏輯功能轉(zhuǎn)換的分析
      青田县| 长泰县| 邵东县| 合作市| 团风县| 汉川市| 盐津县| 荥经县| 安义县| 墨脱县| 福安市| 浦北县| 富宁县| 利津县| 南宁市| 绥中县| 南和县| 和林格尔县| 确山县| 永嘉县| 绵竹市| 同仁县| 安岳县| 扶绥县| 邛崃市| 卓尼县| 中方县| 泽普县| 麻栗坡县| 竹溪县| 德兴市| 顺义区| 克拉玛依市| 肇东市| 东乡县| 故城县| 山西省| 沾益县| 十堰市| 潮安县| 中山市|